DNS域传送漏洞

发布于 17 天前  9 次阅读


DNS

DNS的全程是Domain Name System,DNS是万维网WWW的重要基础。它建立在一个分布式数据库基础之上,在这个数据库里,保存了IP地址和域名的相互映射关系。 通常服务器都有自己的IP,如果没有DNS的存在,我们想要访问服务器,则需要记住那一串冗长、无规则的IP地址,DNS的存在,使得域名和IP之间存在了映射关系,只需要访问对方服务器的域名,就可以访问相关服务. DNS服务器使用的是TCP/UDP端口(port:53) 查询资料 最常用的DNS记录有以下几类:

A记录       IP地址记录,记录一个域名对应的IP地址
 
AAAA记录    IPv6 地址记录,记录一个域名对应的IPv6地址
 
CNAME记录   别名记录,记录一个主机的别名
 
MX记录    电子邮件交换记录,记录一个邮件域名对应的IP地址电子邮件交换记录,记录一个邮件域名对应的IP地址,如root@xxxx.com
 
NS记录      域名服务器记录 ,记录该域名由哪台域名服务器解析
 
PTR记录     反向记录,也即从IP地址到域名的一条记录
 
TXT记录     记录域名的相关文本信息

DNS服务器分为:主服务器、备份服务器和缓存服务器。在主备服务器之间同步数据库,需要使用“DNS域传送”。域传送是指后备服务器从主服务器拷贝数据,并用得到的数据更新自身数据库。

若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录。造成整个网络的拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器。凭借这份网络蓝图,攻击者可以节省很少的扫描时间。

利用手段

在windows环境下

nslookup

C:\Windows\system32>nslookup ?
用法:
   nslookup [-opt ...]             # 使用默认服务器的交互模式
   nslookup [-opt ...] - server    # 使用 "server" 的交互模式
   nslookup [-opt ...] host        # 仅查找使用默认服务器的 "host"
   nslookup [-opt ...] host server # 仅查找使用 "server" 的 "host"

当你不带任何参数执行nslookup时,进入的是交互式shell界面 然后非交互式界面下的语法是 nslookup [-option] [hostname] [server] Option是可选的参数,不带参数执行nslookup命令,可进入交互式shell,在shell中输入help,可查阅参数说明,如下例所示:

D:\>nslookup
默认服务器:  public1.114dns.com
Address:  114.114.114.114
 
> help
命令:   (标识符以大写表示,[] 表示可选)
set OPTION      - 设置选项
    type=X              - 设置查询类型(如 A、AAAA、A+AAAA、ANY、CNAME、MX
                          NS、PTR、SOA 和 SRV)
ls [opt] DOMAIN [> FILE] - 列出 DOMAIN 中的地址(可选: 输出到文件 FILE)
    -a          -  列出规范名称和别名
    -d          -  列出所有记录
    -t TYPE     -  列出给定 RFC 记录类型(例如 A、CNAME、MX、NS 和 PTR 等)
                   的记录
exit            - 退出程序

注意两点: 1.使用type参数可以设置记录类型。 2.使用ls命令,可以列出一个域下面所有的域名 Hostname选项指定需要查询的主机名,Server选项指定DNS服务器。为了查询结果的准确,可选用几个常用的公共DNS服务器:8.8.8.8是Google提供的DNS服务,114.114.114.144和114.114.115.115是114DNS提供的免费DNS服务。 比如下面的查询百度

C:\Windows\system32>nslookup -type=ns baidu.com
服务器:  UnKnown
Address:  fe80::1

非权威应答:
baidu.com       nameserver = dns.baidu.com
baidu.com       nameserver = ns2.baidu.com
baidu.com       nameserver = ns4.baidu.com
baidu.com       nameserver = ns7.baidu.com
baidu.com       nameserver = ns3.baidu.com

下面的例子展示如何查询jd.com的邮件交换记录:

C:\Windows\system32>nslookup -type=mx jd.com
服务器:  UnKnown
Address:  fe80::1

非权威应答:
jd.com  MX preference = 10, mail exchanger = mx.jd.com

下例反向查询一个IP地址对应的域名:

C:\Windows\system32>nslookup -type=ptr 8.8.8.8
服务器:  UnKnown
Address:  fe80::1

非权威应答:
8.8.8.8.in-addr.arpa    name = dns.google

发现漏洞的操作基本的步骤是: 1.输入nslookup命令进入交互式shell

  1. Server 命令参数设定查询将要使用的DNS服务器
  2. Ls命令列出某个域中的所有域名 4.Exit命令退出程序

攻击者能获取的敏感主要包括: 1.网络的拓扑结构,服务器集中的IP地址段 2.数据库服务器的IP地址,例如上述nwpudb2.nwpu.edu.cn 3.测试服务器的IP地址,例如test.nwpu.edu.cn 4.VPN服务器地址泄露 5.其他敏感服务器

nmap

使用nmap扫描器附带的脚本,可以扫描DNS服务器是否存在域传送漏洞。语法为:

nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=domainName -p 53 -Pn dnsServer

参数解析: --script:表示载入dns-zone-transfer脚本,用于扫描DNS域传送漏洞。 --script-args:表示传递给脚本的参数,通过dns-zone-transfer.domain参数设置要列出的域名。 -p:设置DNS服务的端口(可不设置,默认为53) dnsServer:DNS服务器地址 -Pn设置通过Ping发现主机是否存活