那些年没追过的DNS域传送漏洞
基础知识
DNS :一个保存IP地址和域名相互映射关系的分布式数据库,重要的互联网基础设施,默认使用的TCP/UDP端口号是53。
因此我们需要找开放53端口的服务器,不过现在很难找到这类漏洞。
常见DNS记录类型:
A IP地址记录,记录一个域名对应的IP地址
AAAA IPv6 地址记录,记录一个域名对应的IPv6地址
CNAME 别名记录,记录一个主机的别名
MX 电子邮件交换记录,记录一个邮件域名对应的IP地址,如[email protected]
NS 域名服务器记录 ,记录该域名由哪台域名服务器解析
PTR 反向记录,也即从IP地址到域名的一条记录
TXT 记录域名的相关文本信息
域传送
DNS服务器分为:主服务器、备份服务器和缓存服务器。
域传送是指后备服务器从主服务器拷贝数据,并用得到的数据更新自身数据库。
在主备服务器之间同步数据库,需要使用“DNS域传送”。
漏洞原理
DNS协议支持使用axfr类型的记录进行区域传送,用来解决主从同步的问题。如果管理员在配置DNS服务器的时候没有限制允许获取记录的来源,将会导致DNS域传送漏洞。
靶场测试
dig @your-ip www.vulhub.org
dig @your-ip -t axfr vulhub.org
检测方法
这个靶场使用的命令和实际环境有点差异。于是,我去wooyun镜像站上找了一些DNS域传送漏洞。
总结一下检测的方法。
1、nslookup命令
2、dig命令
3、Nmap脚本
nslookup命令
个人习惯感觉nslookup比较麻烦,交互式的,后来在网上找到了一个非交互式的方法。
编写一个ls.bat
echo ls %1 | nslookup – %2 %1代表第一个参数,即xxx.edu.cn %2代表第二个参数,即dns.xxx.edu.cn
dig命令
dig NS xxxx.com dig axfr @ns1.xxxx.com xxxx.com @指定域名服务器;axfr 为域传送指令;xxxx.com表示要查询的域名;
自己用python写了一个脚本,很水...
import os print "--------------------dns-zone-transfer--------------------" url = raw_input("Please input your target,like xxxx.com : ") os.system("dig NS "+url) strings = raw_input("If not error , please input like ns.xxxx.com ,or input 'q' exit it: ") if(strings == "q"): exit() else: os.system("dig axfr @" + strings + " " + url)
Nmap命令
nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=xxxx.com -p 53 -Pn dns.xxxx.com