天天看點

DNS區域傳送漏洞實驗以及二級域名爆破

DNS區域傳送漏洞實驗以及二級域名爆破

目錄:

1.DNS伺服器的域傳送漏洞(nslookup互動式、非互動式、批處理三種方式)

2.寫個二級域名爆破腳本

一、DNS伺服器的域傳送漏洞

實驗環境:

服務端:Windows2008 安裝DNS服務(建立A記錄),安裝IIS服務(搭建一個站點)

用戶端:win10(DNS設定為windows 2008的IP位址)

實驗步驟:

一、服務端搭建一個網站

1.服務端搭建一個網站并設定預設首頁

  

DNS區域傳送漏洞實驗以及二級域名爆破
2.服務端設定DNS,并建立一個主機記錄
DNS區域傳送漏洞實驗以及二級域名爆破

3.用戶端測試網站以及DNS建立的主機記錄(通過主機名通路)

通過下圖可以說明,網站搭建完好以及DNS解析正常

DNS區域傳送漏洞實驗以及二級域名爆破
4.檢查服務端是否開啟“區域傳送”,可以看到下圖沒有開啟DNS區域傳送
DNS區域傳送漏洞實驗以及二級域名爆破
5.用戶端使用nslookup檢視DNS記錄,可以看到www. hnuahe.edu.cn解析的DNS記錄
DNS區域傳送漏洞實驗以及二級域名爆破
6.看看是否存在DNS區域傳送漏洞,列出hnuahe.edu.cn的所有二級域名
DNS區域傳送漏洞實驗以及二級域名爆破
7.從上圖可以看到目标不存在DNS傳送漏洞,那麼我們就在windows 2008開啟區域傳送,并不做任何限制并再建立幾條主機記錄,友善下面測試實作效果,見下圖
DNS區域傳送漏洞實驗以及二級域名爆破
8.再在用戶端測試是否存在區域傳遞漏洞,我們可以看到幾個主機記錄,說明存在DNS區域傳送漏洞
DNS區域傳送漏洞實驗以及二級域名爆破

9.剛才的實驗實在互動式模式下測試DNS伺服器是否存在域傳送漏洞, 為了能夠非互動式運作,可以通過管道來實作。

echo ls (要列出的域名) | nslookup

#注:nslookup也可以指定DNS伺服器  echo ls (要列出的域名) | nslookup  –  (DNS伺服器)

DNS區域傳送漏洞實驗以及二級域名爆破

10.也可以通過批處理來實作非互動式測試DNS伺服器是否存在域傳送漏洞

編寫批處理檔案:ls.bat

Echo ls %1 | nslookup - %2          #批處理通過%來獲得指令行傳遞來的參數

注: 為了測試dns.nwpu.edu.cn伺服器,可以執行ls.bat hnuahe.edu.cn www.hnuahe.edu.cn。 批進行中:

1) %1代表第一個參數,也即hnuahe.edu.cn

2) %2代表第二個參數,即www.hnuahe.edu.cn

3) Echo是回聲指令,原文輸出傳入的參數内容

4) “|”是管道符号,作用是把前一個指令執行的結果傳給後一個指令。是以:執行ls.bat hnuahe.edu.cn www.hnuahe.edu.cn,等價于執行echo ls hnuahe.edu.cn | nslookup – www.hnuahe.edu.cn。

5) nslookup - www.hnuahe.edu.cn是指定DNS伺服器為www.hnuahe.edu.cn

可以看到通過批處理來執行測試出來DNS伺服器存在域傳送漏洞

DNS區域傳送漏洞實驗以及二級域名爆破

二、二級域名爆破

 當我們在查找某個域名的有效子域名時,我們通常需要使用子域名枚舉這項技術。但是,除非DNS伺服器暴露了完整的DNS空間(涉及到AXFR協定),否則我們真的很難拿到目标域名的子域名清單。目前主要的技術是使用一個常用域名的字典,并通過對每一個域名嘗試進行解析來查找子域名。雖然這種方法在某些情況下非常有效,但是對于那些名字非常奇怪或罕見的域名來說,這種方法就沒多大用了。

當然了,查找子域名也可以通過網絡爬蟲,以及搜尋引擎(常用,因為更加高效)

代碼如下: #注意需要自己準備一個字典

#進行暴力破解DNS二級域名
#利用nslookup 域名 循環嘗試
import os
from threading import Thread
import time
#加載字典
with open("C://Users//admin//Desktop//dnsyuming_dict.txt") as f:
    nlist=f.readlines()
#print(nlist)
bz=0    #做标志位,用于後面的結束循環讀取字典
rlist=[]
def f(astr):
    global bz
    cmd="nslookup %s.hnuahe.edu.cn"%astr        #這裡可以修改    
    result=os.popen(cmd).read()
    if result.count("Address")>1:       #nslookup 執行成功傳回的字元串中有兩個"Address",失敗隻有傳回一個
        rlist.append(astr+".hnuahe.edu.cn")     #把nslookup 執行成功得到的二級域名加入到清單中
    bz+=1

if __name__=="__main__":
    print("掃描開始:")
    ts=[]   #線程池
    for i in nlist:
        t=Thread(target=f,args=(i.strip(),))
        ts.append(t)
        t.start()   #開啟多線程
    for i in ts:
        t.join()    
    while 1:
        if bz==len(nlist):  #如果标志位和字典的長度相等,則退出循環
            break
        time.sleep(1)
    print("一共掃描到%d個結果:"%len(rlist))
    print(rlist)
    print("掃描結束!")        

運作效果如下:

DNS區域傳送漏洞實驗以及二級域名爆破

--------------------------------------------------------------------------------------------------

DNS安裝與配置,請參考:https://www.cnblogs.com/yuzly/p/10474146.html

web安裝與配置,請參考:https://www.cnblogs.com/yuzly/p/10459272.html