DNS简介
DNS的认识
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明
DNS功能:
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能
DNS域传送漏洞
原理
DNS服务器分为:主服务器、备份服务器和缓存服务器。在主备服务器之间同步数据库,需要使用“DNS域传送”。域传送是指后备服务器从主服务器拷贝数据,并用得到的数据更新自身数据库
若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录。造成整个网络的拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器。凭借这份网络蓝图,攻击者可以节省很少的扫描时间
危害
恶意用户可以通过dns域传送获取被攻击域下所有的子域名。会导致一些非公开域名(测试域名、内部域名)泄露
而泄露的类似内部域名,其安全性相对较低,更容易遭受攻击者的攻击,比较典型的譬如内部的测试机往往就会缺乏必要的安全配置
漏洞挖掘
- 利用网络空间搜索引擎收集域名服务器–>port:53
- 利用MasScan收集dns服务器:GitHub - robertdavidgraham/masscan: TCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes.
使用方式参考:DNS域传送漏洞的收集、检测与利用_LandGrey的博客-CSDN博客_dns域传送漏洞
- 收集好的dns服务器与域名:edu-dns-zone-transfer/vulnerable_hosts.txt at master · lijiejie/edu-dns-zone-transfer · GitHub
利用方式
一、nslookup
- 输入nslookup命令进入交互式shell
- server 命令参数设定查询将要使用的DNS服务器
- ls命令列出某个域中的所有域名
- exit命令退出
失败例子
1 | PS C:\Users\秋水> nslookup |
非交互式方法
为了避免和nslookup交换,可以编写一个ls.bat
1 | echo ls %1 | nslookup – %2 |
%1代表第一个参数,即xxx.edu.cn
%2代表第二个参数,即dns.xxx.edu.cn
echo是回声命令,原文输出传入的参数内容
测试dns.xxx.edu.cn服务器,可以执行命令
1 | ls.bat xxx.edu.cn dns.xxx.edu.cn |
二、nmap使用脚本
1 | nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=xxx.edu.cn -p 53 -Pn dns.xxx.edu.cn |
dns-zone-transfer.domain参数 指定要查询的域;dns.xxx.edu.cn 为指定的查询域名服务器
成功的话会如下所示,列出了指定域中所有的记录(如果端口屏蔽,就查不出了,不太实用)
三、dig使用命令
1 | dig @dns.xxx.edu.cn axfr xxx.edu.cn |
@指定域名服务器;axfr 为域传送指令;xxx.edu.cn表示要查询的域名
更多组合利用方式参考:DNS域传送漏洞的收集、检测与利用_LandGrey的博客-CSDN博客_dns域传送漏洞
漏洞修复
解决方案:区域传送是DNS常用的功能,区域传送的漏洞也不是没有办法解决的,严格限制允许区域传送的主机即可,例如一个主DNS服务器应该只允许它的从DNS服务器执行区域传送的功能。
针对于bind软件,可以通过allowe-transfer指令来控制,可以作为global选项或者zone选项的一个参数,我们可以使用地址列表如下
1 | allowe-transfer {xxx.xxx.xxx.xxx; xx.xx.xx.xx;}; |
但是使用基于地址的访问控制列表可能会被某些“意志坚定”黑客绕过,呵呵。最好方法是使用TSIG key来严格定义区域传送的关系,如下
1 | allowe-transfer {key "dns1-slave1"; key "dns1-slave2";}; |
参考文章:
DNS域传送漏洞的收集、检测与利用_LandGrey的博客-CSDN博客_dns域传送漏洞
一篇关于DNS-bild搭建的文章: