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

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

目錄:web

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

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

1、DNS服務器的域傳送漏洞網絡

實驗環境:多線程

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

客戶端:win10(DNS設置爲windows 2008的IP地址)測試

實驗步驟:網站

1、服務端搭建一個網站搜索引擎

1.服務端搭建一個網站並設置默認主頁

  

2.服務端設置DNS,並建立一個主機記錄

  

3.客戶端測試網站以及DNS建立的主機記錄(經過主機名訪問)

經過下圖能夠說明,網站搭建無缺以及DNS解析正常

  

4.檢查服務端是否開啓「區域傳送」,能夠看到下圖沒有開啓DNS區域傳送

  

5.客戶端使用nslookup查看DNS記錄,能夠看到www. hnuahe.edu.cn解析的DNS記錄

  

6.看看是否存在DNS區域傳送漏洞,列出hnuahe.edu.cn的全部二級域名

  

7.從上圖能夠看到目標不存在DNS傳送漏洞,那麼咱們就在windows 2008開啓區域傳送,並不作任何限制並再建立幾條主機記錄,方便下面測試實現效果,見下圖

  

8.再在客戶端測試是否存在區域傳遞漏洞,咱們能夠看到幾個主機記錄,說明存在DNS區域傳送漏洞

  

9.剛纔的實驗實在交互式模式下測試DNS服務器是否存在域傳送漏洞, 爲了可以非交互式運行,能夠經過管道來實現。

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

#注:nslookup也能夠指定DNS服務器  echo ls (要列出的域名) | nslookup  –  (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服務器存在域傳送漏洞

  

2、二級域名爆破

 當咱們在查找某個域名的有效子域名時,咱們一般須要使用子域名枚舉這項技術。可是,除非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安裝與配置,請參考:https://www.cnblogs.com/yuzly/p/10474146.html

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

相關文章
相關標籤/搜索