靶机遇漏洞系列,记录在打靶机过程中遇到的漏洞,学习其原理和利用方式。
漏洞原理
DNS协议支持使用axfr类型的记录进行区域传送,用来解决主从同步的问题。如果管理员在配置DNS服务器的时候没有限制允许获取记录的来源,将会导致DNS域传送漏洞。
漏洞复现
1.环境搭建
使用vulhub搭建一个漏洞测试靶场。
下载好vulhub后,DNS传送漏洞在vulhub文件夹的/dns/dns-zone-transfer路径下。
在该路径下启动漏洞测试镜像。(前提:安装好docker环境)
docker-compose up -d
环境运行后,将会监听TCP和UDP的53端口,DNS协议同时支持从这两个端口进行数据传输。
查看docker的IP地址
docker ps #显示在运行的容器名及容器id等信息
docker inspect [容器ID] | grep IPAddress # [容器ID]为漏洞环境所在容器,此处为f1d8b2ce3b14
这里docker的IP地址为172.18.0.2
2.漏洞扫描
可以分别使用以下两种工具测试DNS域传送漏洞是否存在。
nmap
nmap --script dns-zone-transfer.nse --script-args "dns-zone-transfer.domain=vulhub.org" -Pn -p 53 your-ip
dig
dig @your-ip -t axfr vulhub.org
可见,我获取到了“vulhub.org”的所有子域名记录,这里存在DNS域传送漏洞。
这里补充一个DNS解析中的各种记录的意义:
A | 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录 |
NS | 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录 |
SOA | SOA叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中标记哪一台是主服务器 |
MX | 建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录。建立邮箱时,一般会根据邮箱服务商提供的MX记录填写此记录 |
TXT | 可任意填写,可为空。一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录 |
3.漏洞利用
DNS域传送漏洞会造成整个网络的拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器等。攻击者通过快速地枚举该域内的所有主机信息来筛选攻击目标,进而利用域中的安全薄弱环节进行后续的渗透攻击。
漏洞修复
区域传送是 DNS 常用的功能,为保证使用安全,应严格限制允许区域传送的主机,例如一个主 DNS 服务器应该只允许它的备用 DNS 服务器执行区域传送功能。
默认情况配置项没有allow-transfer 项。如果直接使用默认配置文件进行配置的话(不手动添加allow-transfer项),就会存在dns 域传送漏洞。
设置方式为两种:一种设置在options配置域;一种设置在zone配置域。优先级为如果zone没有进行配置,则遵守options的设置。如果zone进行了配置,则遵守zone的设置。
在相应的 zone、options 中添加 allow-transfer,对执行此操作的服务器进行限制。如:
1、严格限制允许进行区域传送的客户端的 IP:
allow-transfer {1.1.1.1; 2.2.2.2;}
2、设置 TSIG key:
allow-transfer {key "dns1-slave1"; key "dns1-slave2";}