DNS是网络中应用非常广泛的服务之一,是一种底层的网络基础服务。它的主要作用是提供域名(如baidu.com)和IP直接解析关系的功能,只要我们的网络通信中存在域名,就会涉及到DNS服务。
DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库。这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务器因意外故障变得不可用时影响到整个域名的解析。一般来说,DNS区域传送操作只在网络里真的有备用域名DNS服务器时才有必要用到,但许多DNS服务器却被错误地配置成只要有client发出请求,就会向对方提供一个zone数据库的详细信息,所以说允许不受信任的因特网用户执行DNS区域传送(zone transfer)操作是后果最为严重的错误配置之一。
简单点说就是DNS服务器配置不当,导致可以将该DNS服务器上的数据传送到其他的主机上。恶意攻击者可以通过此种方法,获取某个域名的所有子域名及对应IP地址。
测试方法
1、Linux dig测试方法
dig是Linux上常用的dns工具,如果没有此命令,可以使用如下命令安装(Centos系统):
yum install bind-utils
使用dig进行DNS域传送,首先要找到主机的SOA或者NS记录:
|
|
显示结果忽略注释部分,我们可以看到SOA记录有两个服务器:f1g1ns1.dnspod.net
和 freednsadmin.dnspod.com
,然后我们就可以通过如下命令查看DNS是否存在DNS域传送漏洞,如果存在,则可以找到xxx.com的所有子域名和IP对应关系:
|
|
以上是不能进行DNS域传送的结果,下图是可以进行DNS域传送的结果:
2、Windows nslookup命令
nslookup是windows下自带的DNS测试工具,可以通过此命令进行DNS域传送测试:
主要方法和dig类似,先找出ns服务器,然后执行ls -d
列出子域等信息(以下是不能传送的情形):
|
|
正常存在DNS域传送漏洞的返回结果如下所示:
3、使用dnsenum.pl和Dnswalk测试:
现成工具,不做介绍,Kali里边有