使用 AXFR 协议的 DNS 区域传输是跨 DNS 服务器复制 DNS 记录的最简单机制。 为避免需要在多个 DNS 服务器上编辑信息,您可以在一台服务器上编辑信息并使用 AXFR 将信息复制到其他服务器。 但是,如果您不保护您的服务器,恶意方可能会使用 AXFR 获取有关您所有主机的信息。
1、DNS工作原理
DNS(域名系统)就像一个互联网电话簿。它负责将人类可读的主机名解析为机器可读的 IP 地址。该系统包括提供信息的权威DNS服务器和临时存储该信息以供客户端查找的 DNS 缓存。典型的DNS查询非常简单:客户端提供人类可读的主机名,并作为响应接收IP地址。但是,系统假定查询客户端知道主机名。
DNS 服务器托管区域。DNS 区域是由DNS服务器提供服务的域名空间的一部分。例如,http://example.com及其所有子域可能是一个区域。但是, http://second.example.com也可能是一个单独的区域。
2、DNS域传送漏洞
DNS协议支持使用axfr类型的记录进行区域传送,用来解决主从同步的问题。如果管理员在配置DNS服务器的时候没有限制允许获取记录的来源,将会导致DNS域传送漏洞。
2. 环境搭建
Vulhub使用Bind9来搭建dns服务器,但不代表只有Bind9支持AXFR记录。运行DNS服务器:
docker-compose up -d
环境运行后,将会监听TCP和UDP的53端口,DNS协议同时支持从这两个端口进行数据传输。
3、漏洞复现
在Linux下,我们可以使用dig命令来发送dns请求。比如,我们可以用dig @your-ip http://www.vulhub.org获取域名http://www.vulhub.org在目标dns服务器上的A记录:
![](https://i-blog.csdnimg.cn/blog_migrate/59e3a7a9bc8f6bc37ba2b60a2e730b04.webp?x-image-process=image/format,png)
发送axfr类型的dns请求:dig @your-ip -t axfr http://vulhub.org
![](https://i-blog.csdnimg.cn/blog_migrate/7593d39e3c82a8bc0016d65118e829d2.jpeg)
可见,我获取到了http://vulhub.org的所有子域名记录,这里存在DNS域传送漏洞。
我们也可以用nmap script来扫描该漏洞:nmap --script dns-zone-transfer.nse --script-args “dns-zone-transfer.domain=http://vulhub.org” -Pn -p 53 your-ip
![](https://i-blog.csdnimg.cn/blog_migrate/c7b02484fe869ca2fdb51ce0b9ff372a.jpeg)