DNS域传送漏洞

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记录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@user ~]# dig soa xxx.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> soa 3mc2.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2865
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;3mc2.com. IN SOA
;; ANSWER SECTION:
xxx.com. 600 IN SOA f1g1ns1.dnspod.net. freednsadmin.dnspod.com. 1411491105 3600 180 1209600 180
;; Query time: 504 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: Wed Mar 11 11:26:05 2015
;; MSG SIZE rcvd: 100

显示结果忽略注释部分,我们可以看到SOA记录有两个服务器:f1g1ns1.dnspod.netfreednsadmin.dnspod.com,然后我们就可以通过如下命令查看DNS是否存在DNS域传送漏洞,如果存在,则可以找到xxx.com的所有子域名和IP对应关系:

1
2
3
4
5
[root@user ~]# dig axfr xxx.com @f1g1ns1.dnspod.net
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> axfr xxx.com @f1g1ns1.dnspod.net
;; global options: +cmd
; Transfer failed.

以上是不能进行DNS域传送的结果,下图是可以进行DNS域传送的结果:

2、Windows nslookup命令

nslookup是windows下自带的DNS测试工具,可以通过此命令进行DNS域传送测试:

主要方法和dig类似,先找出ns服务器,然后执行ls -d 列出子域等信息(以下是不能传送的情形):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[c:\~]$ nslookup
默认服务器: public1.alidns.com
Address: 223.5.5.5
> set type=ns
> xxx.com
非权威应答:
服务器: public1.alidns.com
Address: 223.5.5.5
xxx.com nameserver = f1g1ns1.dnspod.net
xxx.com nameserver = f1g1ns2.dnspod.net
> server f1g1ns2.dnspod.net
默认服务器: f1g1ns2.dnspod.net
Addresses: 115.236.137.40
112.90.82.194
101.226.30.224
182.140.167.188
> set type=any
> ls -d 3mc2.com
*** 无法列出域 xxx.com: BAD ERROR VALUE
DNS 服务器拒绝将区域 3mc2.com 传送到您的计算机。如果这不正确,
请检查 IP 地址 223.5.5.5 的 DNS 服务器上 3mc2.com 的
区域传送安全设置。

正常存在DNS域传送漏洞的返回结果如下所示:

3、使用dnsenum.pl和Dnswalk测试:

现成工具,不做介绍,Kali里边有

大爷,赏个铜板呗!