DNS域传送漏洞
dig命令
先记录一下dig命令:
dig [选项] [域名] [查询类型]
- 域名:要查询的域名(如
example.com
)。 - 查询类型:指定要查询的 DNS 记录类型(如
A
、MX
、NS
等)。默认是A
记录。li
- 查询域名的 NS 记录
dig example.com NS
输出示例:
;; ANSWER SECTION:
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.
- 查询域名的 TXT 记录
dig example.com TXT
输出示例:
;; ANSWER SECTION:
example.com. 86400 IN TXT "v=spf1 include:_spf.example.com ~all"
- 反向查询(通过 IP 查找域名)
dig -x 93.184.216.34
;; ANSWER SECTION:
34.216.184.93.in-addr.arpa. 86400 IN PTR example.com.
- 指定 DNS 服务器查询
dig @8.8.8.8 example.com
使用 Google 的公共 DNS 服务器(8.8.8.8)查询域名。
例如:
❯ dig bx33661.com
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> bx33661.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51587
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;bx33661.com. IN A
;; ANSWER SECTION:
bx33661.com. 5 IN A 198.18.0.92
;; Query time: 2 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Jan 21 22:18:10 CST 2025
;; MSG SIZE rcvd: 56
QUESTION SECTION:
问题部分ANSWER SECTION:
应答部分- 最后的几行是****查询统计
DNS 域传送漏洞(DNS Zone Transfer Vulnerability)
它允许未经授权的用户获取某个域的所有 DNS 记录信息,可能导致敏感信息泄露,
检测方法
发送axfr类型的DNS请求
dig @目标DNS服务器ip -t axfr 域名
AXFR 是一种用于从主 DNS 服务器复制整个域信息的机制
检测流程
- 查询一下域名对应的DNS服务器
dig bx33661.com NS
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> bx33661.com NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14489
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;bx33661.com. IN NS
;; ANSWER SECTION:
bx33661.com. 5 IN NS amplitude.dnspod.net.
bx33661.com. 5 IN NS haley.dnspod.net.
;; Query time: 309 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Jan 21 22:37:53 CST 2025
;; MSG SIZE rcvd: 94
- 查询对应DNS服务器对应的IP
dig amplitude.dnspod.net
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> amplitude.dnspod.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4596
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;amplitude.dnspod.net. IN A
;; ANSWER SECTION:
amplitude.dnspod.net. 5 IN A 198.18.0.106
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Jan 21 22:38:16 CST 2025
;; MSG SIZE rcvd: 65
- 检测是否存在域传送
dig @198.18.0.106 -t axfr bx33661.com
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> @198.18.0.106 -t axfr bx33661.com
; (1 server found)
;; global options: +cmd
; Transfer failed.
如果存在漏洞:
这里用vulhub靶场的截图
- dig
- nmap
其他
可以用一些工具
- DNSRecon
dnsrecon -d bx33661.com -t axfr
- Nmap
nmap --script dns-zone-transfer -p 53 ns1.example.com
修复:
BIND里面:
zone "bx33661.com" {
type master;
file "bx33661.com.zone";
allow-transfer { 192.168.1.2; }; // 只允许特定 IP
};