DNS域传送漏洞
0X01原理
DNS作为重要的互联网基础设施,难免成为黑客的重点攻击目标,服务的稳定性尤为重要。
DNS服务器分为:主服务器、备份服务器和缓存服务器。在主备服务器之间同步数据库,需要使用“DNS域传送”。域传送是指后备服务器从主服务器拷贝数据,并用得到的数据更新自身数据库。
若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录。造成整个网络的拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器。凭借这份网络蓝图,攻击者可以节省很少的扫描时间。
大的互联网厂商通常将内部网络与外部互联网隔离开,一个重要的手段是使用Private DNS。如果内部DNS泄露,将造成极大的安全风险。风险控制不当甚至造成整个内部网络沦陷。
常见DNS记录:
主机记录(A记录):A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
IPv6主机记录(AAAA记录):与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
别名(CNAME记录):CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
电子邮件交换记录(MX记录):记录一个邮件域名对应的IP地址。
域名服务器记录 (NS记录):记录该域名由哪台域名服务器解析。
反向记录(PTR记录):也即从IP地址到域名的一条记录TXT记录:记录域名的相关文本信息。
0X02漏洞复现
在vulhub的dns域传送目录下启动
docker-compose up -d
查看服务器ip 192.168.20.243
攻击机 输入dig测试命令。
@192.168.0.161 表示指定域名解析服务器,即DNS服务器
-t axfr 表示发送指定类型
axfr代表域传输请求
vulhub.org 表示待解析的域名
发送域传输请求后,得到了关于vulhub.org域名相关的所有域名信息,证明域传输漏洞是存在。
使用nmap工具对DNS服务器进行扫描测试。
命令nmap --script dns-zone-transfer.nse --script-args "dns-zone-transfer.domain=vulhub.org" -Pn -p 53 192.168.0.161
{{uploading-image-198817.png(uploading...)}}
windows下nslookup命令以两种方式运行:非交互式和交互式。
1、非交互式模式下,查看对应主机域的域名服务器
~# nslookup -type=ns xxx.com
2、进入交互模式,指定域名服务器,列出域名信息
~# nslookup
> server dns.xxx.com
> ls xxx.com
ls: connect: No such file or directory
*** 无法列出域 xxx.com: Unspecified error
DNS 服务器拒绝将区域 xxx.com 传送到你的计算机。
如果这不正确,请检查 IP 地址 xxxxx 的 DNS 服务器上 xxx.com 的区域传送安全设置。
如果提示无法列出域,那就说明此域名不存在域传送漏洞。
0x03漏洞修复
区域传送是 DNS 常用的功能,为保证使用安全,应严格限制允许区域传送的主机,例如一个主 DNS 服务器应该只允许它的备用 DNS 服务器执行区域传送功能。
在相应的 zone、options 中添加 allow-transfer,对执行此操作的服务器进行限制。如:
- 严格限制允许进行区域传送的客户端的 IP
allow-transfer {1.1.1.1; 2.2.2.2;}
- 设置 TSIG key
allow-transfer {key "dns1-slave1"; key "dns1-slave2";}
``