DNS解析
当用户访问域名时浏览器解析首先会查看浏览器缓存是否有对应的ip,如果没有则会到本地host文件中查看是否有对应的ip,如果没用则会将域名发送给本地区的DNS服务器.
DNS服务器分为递归服务器,根服务器,权威服务器
首先是递归服务器拿到域名后查看缓存,如果缓存没用则向根服务器查询顶级域名服务器的ip地址。递归服务器对应的顶级域名找到并询问顶级域名服务器二级域名,顶级服务器返回二级域名对应的ip。递归服务器根据二级域名的ip找对并访问权威服务器。权威服务器返回整个域名的ip给递归服务器。
漏洞原理
DNS还分为主服务器,备份服务器,缓存服务器(递归服务器),备份服务器会实时从主服务器获取数据已更新自己的数据以备主服务器出错不能运作时维持正常的域名解析。正常只有私有备份服务器可以获取主服务器的数据。所谓的域传送是指备份服务器从主服务器拷贝数据,并使用得到的数据更新自身数据库。域传送是在主备服务器之间同步数据库的机制
但如果由于主服务器管理人员配置不当导致主服务器允许任意客户端请求数据。
漏洞判断
启动vulhub中漏洞的容器
cd vulhub/dns/dns-zone-transfer/
docker-compose up -d
启动后使用kali自带DNS信息查询工具dig
dig @192.168.200.128 vulhub.org
利用dig的选项axfr来向指请求传送某个区域的全部记录。用于伪装成DNS服务器向主服务器发送请求
dig @192.168.200.128 -t axfr vulhub.org
可以看到主服务器带出了全部解析信息说明该服务器存在域传输漏洞
修复建议
DNS服务器应该对能执行该操作的服务器进行严格的限制如:
- 严格限制允许进行区域传送的客户端的 IP
- 设置 TSIG key
参考
2.6.1. 简介 — Web安全学习笔记 1.0 文档 (websec.readthedocs.io)
漏洞复现 | DNS域传送漏洞-腾讯云开发者社区-腾讯云 (tencent.com)