漏洞名称:DNS域传送漏洞
简介:
DNS是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。
影响版本:支持axfr记录的版本,例如bind9
DNS服务器使用域传送功能,来达到主从数据同步的目的。域传送关键配置项为:allow-transfer,通过配置allow-transfer项的参数来达到限制允许获取记录的来源的作用。bind9默认安装完毕后,配置项是没有allow-transfer 的,所以如果不手动添加allow-transfer项,就会存在dns 域传送漏洞。
DNS解析类型
1. A记录:域名->IP
泛解析:*.lsawebtest.top都能指向同一个IP
2. cname(别名)记录:多个名字映射到同一台计算机,如www和mail这两个别名都指向lsawebtest.top,分别提供www和mail服务。
3. NS记录:指定由哪个DNS服务器解析你的域名,如lsawebtest.top/ns2.lsawebtest.top
4. MX记录:将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理,如@lsawebtest.top结尾的邮件发到MX记录的邮件服务器上,权重小的优先。
5. TXT记录:域名的说明,可用于SPF(它向收信者表明,哪些邮件服务器是经过某个域名认可会发送邮件)和域名所有权验证。
6. AAAA记录:指向IPv6。
漏洞危害
信息披露
暴露子域名/资产清单
暴露内网IP
漏洞原理
DNS服务器分为主服务器,从(备份)服务器,缓存服务器。DNS协议支持使用axfr类型的记录进行区域传送,用来解决主从同步的问题。如果管理员在配置DNS服务器的时候没有限制允许获取记录的来源,将会导致DNS域传送漏洞,漏洞利用者能够获得某个域的所有记录。
漏洞复现
环境准备
Vulhub使用Bind9来搭建dns服务器,但不代表只有Bind9支持AXFR记录。
靶机环境 101.201.67.137 (vulhub)
攻击机环境 192.168.8.137 (虚拟机 Kali 2020.2 、Java1.8、Burp)
启动 DNS域传送漏洞 环境
1.进入 vulhub 的 DNS域传送漏洞 路径
cd /root/vulhub/dns/dns-zone-transfer
2.编译并启动环境
docker-compose up -d
3.查看环境运行状态
docker ps | grep vulhub
漏洞利用
常用的三种检测方法: nslookup命令, nmap命令,dig命令,
下面将分别演示如何用三种方法检测dns域传送漏洞
启动环境后,将会监听TCP和UDP的53端口,DNS协议同时支持从这两个端口进行数据传输。因为涉及到1024以下的端口号,所以运行上述命令可能需要root权限。
dig命令
kali 自带的 dig 命令发送 dns 请求,获取域名 vulhub.com 在目标 dns 服务器上的A记录
dig @101.201.67.137 vulhub.org
此时,我们发送 axfr 类型的 dns 请求:dig @101.201.67.137 -t axfr vulhub.org
,
axfr
指请求传送某个区域的全部记录。我们只要欺骗 dns
服务器发送一个 axfr
请求过去,如果该 dns
服务器上存在该漏洞,就会返回所有的解析记录值.
namp命令
使用nmap扫描器附带的脚本,可以扫描DNS服务器是否存在域传送漏洞。
语法为:nmap --script dns-zone-transfer.nse --script-args "dns-zone-transfer.domain=vulhub.org" -Pn -p 53 101.201.67.137
nmap –script dns-zone-transfer表示加载nmap文件夹下的脚本文件dns-zone-transfer.nse,扩展名.nse可省略
-script-args dns-zone-transfer.domain=vulhub.org向脚本传递参数,设置列出记录的域是vulhub.org
-p 53设置扫描53端口
-Pn 设置通过Ping发现主机是否存活
可见,我获取到了vulhub.org的所有子域名记录,这里存在DNS域传送漏洞。
nslookup命令
nslookup vulhub.org
如果 nslookup
命令带出了耳机子域名,则证明当前域名存在DNS域传送漏洞