<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    干貨 | HOST碰撞漏洞挖掘技巧

    VSole2023-04-03 14:05:55

    0x01 前言

    在實戰中,我們總會對一個企業進行資產收集,在這個過程中會收集到許多資產,有域名有 ip

    但有的時候打開的域名指向的是一個內網 ip 非常無奈 :(

    而打開的 ip 狀態碼更是直接顯示 400,403,404 禁止我們訪問

    還有一種狀態碼顯示 200 但是輸入啥都沒啥變化的

    同時對它們進行目錄掃描,也是常常沒有結果

    那么這種情況下, HOST 碰撞技術就可以嘗試使用了

    0x02 host 碰撞原理

    當數據包的 host 頭替換為某個域名時在訪問該反代服務器的 ip, 如果 nginx/Apache 的反向代理的 host 配置沒刪除,就會把請求轉發到內網對應的 host 業務服務器上, 接著返回該業務的信息, 實現本該隱藏的業務訪問

    簡單點就是: 當數據包的 host 頭替換為某個域名時在訪問時該反代服務器的 ip, 如果頁面發生了變化,返回了對應的資源, 即可判斷為存在 host 碰撞

    0x03 host 碰撞什么時候存在?

    1業務通過 DNS 解析到外網,后面刪除了 A 記錄(但是 nginx/Apache 的反向代理還沒刪除)

    2測試業務(不對外開放的業務,只流傳于開發或是測試使用)

    0x04 什么樣的 ip 能進行 host 碰撞?

    這里我看網上很多人寫文章都是寫 ip 狀態碼為 40X 的時候,在進行 host 碰撞

    但是我想說,這不一定正確!!!

    實際上,我認為應該改為任何一個 ip 都有 host 碰撞的價值!!!

    這個點的問題在于,現在很多較大的公司比較流行,資產統一把控,也就是自己所有的資產全部收縮進內網

    然后整個 nginx 或是 Apache 服務器,想對外網開放某個資產的時候就通過這個反代服務器新添加個配置映射出去

    這就導致了一個問題, 那就是如果配置不當了, 忘記刪除這臺 nginx 或是 Apache 服務器的域名指向了

    那么我們通過修改 host 就可以重新訪問這些以前在外網后面被收縮進內網的資產了

    例如說:
    現在外網有個 ip: 47.10.10.1(虛構的)
    它的域名為: testmiao.com
    現在它對映射規則配置不當了
    然后打開狀態碼顯示 200,出現的是一個站點,返回的數據為一段 json
    對外映射的: a.testmiao.com
    對外映射的: b.testmiao.com
    內部 nginx/Apache 還映射的: oa.testmiao.com
    那么這種情況下如果我們進行爆破式 host 碰撞
    撞了一個 oa.testmiao.com 進去
    那么 nginx 或是 Apache 服務器接收到這個 host: oa.testmiao.com 
    直接去請求了這個所謂的被收縮進內網的資源,然后返回
    

    這種情況, 我對大公司進行測試時, 已經發現不下于三次

    因此我認為只要是個 ip 能夠訪問,那么它就有進行 host 碰撞的價值

    當然這個是我自己個人實戰經驗,讀者們看個樂乎就好了 :)

    0x05 host 碰撞檢測方法-思路

    網上大佬是遇到 40X,或是收集到了內網域名在進行 host 碰撞

    這里我的檢測方法對比網上那些大佬的比較泛~~

    我的檢測方法是:
    第一步: 
        收集目標域名
        PS: 內外網的域名都要
    第二步: 
        收集目標 ip 段
    第三步: 
        將外網域名保存為一個 hostList.txt 備用
    第四步: 
        將外網域名全部 ping 一下獲取一下 ip,并將收集到的目標 ip 段加外網域名 ip 段保存為一個 ipList.txt 備用
        PS: 只要外網可訪問的 ip 哦
    第五步:
        將收集到的 ipList.txt 與 hostList.txt 進行 host 碰撞檢測
    第六步:
        將可以互相解析的 ip 提取出來
        例如:
            域名: aa.testmiao.com 解析的 ip: 42.169.88.55
            域名: bb.testmiao.com 解析的 ip: 42.142.165.49
            ip:42.169.88.55 修改 host 為:bb.testmiao.com
            然后打開: bb.testmiao.com 顯示的還是 bb.testmiao.com 的內容
            這就說明有價值了 :)
    第七步:
        重點測試提取的 ip 進行 host 碰撞爆破
        例如:
            域名: aa.testmiao.com 解析的 ip: 42.169.88.55
            自己構造常見的內網重要的域名
            如:
                oa.testmiao.com
                user.testmiao.com
                mail.testmiao.com
                sso.testmiao.com
                portal.testmiao.com
    

    0x06 host 碰撞檢測方法-實際

    測試方法的話,我這里提供兩種比較高效的測試方法

    0x06.1 測試數據

    測試數據:
    // 拿來做碰撞的 ip
    域名: https://sso.testmiao.com 解析的 ip: 42.xxx.xxx.xxx
    // 拿來做碰撞的 host
    域名: vms.testmiao.com 解析的 ip: 10.xxx.xxx.xxx
    域名: a.testmiao.com 解析的 ip: 無法解析(猜的內網可能有這個域名)
    域名: b.testmiao.com 解析的 ip: 無法解析(猜的內網可能有這個域名)
    域名: c.testmiao.com 解析的 ip: 無法解析(猜的內網可能有這個域名)
    域名: d.testmiao.com 解析的 ip: 無法解析(猜的內網可能有這個域名)
    域名: scm.testmiao.com 解析的 ip: 118.xx.xxx.xxx
    

    0x06.2 方法一 - 使用工具 HostCollision

    下載地址: https://github.com/pmiaowu/HostCollision
    下載完畢以后
    第一步: 
        打開 HostCollision/dataSource 目錄
        將: ipList.txt 與 hostList.txt 分別填寫進對應的數據(一行一個)
    第二步:
        打開 HostCollision 目錄
        執行命令: java -jar HostCollision.jar
        執行完畢以后會在根目錄生成一個 年-月-日_8 位隨機數 csv/txt 文件
        里面會保存碰撞成功的結果
    

    0x06.3 方法二 - 使用 burp

    但是這個方法,只能一個 ip 一個 ip 的測試,無法批量 host 爆破

    第一步: 找一個你認為有漏洞 ip 我拿的測試數據的 42.xxx.xxx.xxx

    第二步: 將找到的 host 保存成一個 hostList.txt 分別填寫進對應的數據(一行一個)

    第三步: 構造數據包如下圖

    有了這個包以后,發送到測試器里面進行 host 爆破

    0x06.4 瀏覽器訪問的方法

    0x06.4.1 方法一 - 系統 hosts 文件修改

    這里就教如何利用 windows 訪問對應的站點

    例如:
        ip: 42.xxx.xxx.xxx
        host: vms.testmiao.com
    

    打開文件: C:\Windows\System32\Drivers\etc\hosts

    0x06.4.1 方法二 - 使用 burp

    如果還看不明白,這里也有中文版的可以看一眼

    0x07 總結

    1. 收集一些內網常見的重要域名
    例如:
        oa.testmiao.com
        user.testmiao.com
        mail.testmiao.com
        sso.testmiao.com
        portal.testmiao.com
    2. 盡量多可能的收集目標所有可對外訪問的 ip
    3. 盡量多可能的收集目標的域名
    4. 下載 HostCollision
    5. 等待老天爺的寵幸~~~~
    

    要是前面的文章還看不是很懂的話,可以看看這張網站訪問流程的圖會更加清晰

    多試試總會成功的 :)

    host域名服務器
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    1業務通過 DNS 解析到外網,后面刪除了 A 記錄2測試業務0x04 什么樣的 ip 能進行 host 碰撞?這里我看網上很多人寫文章都是寫 ip 狀態碼為 40X 的時候,在進行 host 碰撞但是我想說,這不一定正確!!!實際上,我認為應該改為任何一個 ip 都有 host 碰撞的價值!!!將外網域名全部 ping 一下獲取一下 ip,并將收集到的目標 ip 段加外網域名 ip 段保存為一個 ipList.txt 備用
    域名是某個主域的二級域名或者多級域名,在防御措施嚴密情況下無法直接拿下主域,那么就可以采用迂回戰術拿下子域名,然后無限靠近主域。例如:www.xxxxx.com主域不存在漏洞,并且防護措施嚴密,而二級域名 edu.xxxxx.com存在漏洞,并且防護措施松散,那么就可以采用迂回戰術拿下子域名,然后逐步靠近主域。
    DHCP于1993年10月成為標準協議,其前身是BOOTP協議。DHCP使網絡管理員能從中心結點監控和分配IP地址。當某臺計算機移到網絡中的其它位置時,能自動收到新的IP地址。
    Web安全常見漏洞修復建議
    通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析。地址1.3 DNS 的功能每個 IP 地址都可以有一個主機名,主機名由一個或多個字符串組成,字符串之間用小數點隔開。主機名到 IP 地址映射的兩種方式靜態映射/etc/hosts文件在每臺設備上都有主機到IP的映射關系,只供此設備使用動態映射/etc/resolv.conf文件指通過DNS服務器配置主機到IP的映射關系#?
    類似的文章以前也寫過兩篇,記得以前的文章寫的是,微軟的操作系統為了幫助廣大網友快速解決網絡故障,使用了自動化的檢測腳本。對于微軟這種巨無霸企業,靶機通常由若干個大Cluster組成,即使其中一臺靶機掉線,但作為一個整體應該是一直在線的,所以靶機的問題應該可以排除。經過上文的分析,DNS造成的問題可能性最大,可以換一個可靠的域名服務器一試。
    ping 能夠以毫秒為單位顯示發送請求到返回應答之間的時間量。共發送了四個測試數據包,正確接收到四個數據包。但如果收到 0 個回送應答,那么表示子網掩碼不正確或網卡配置錯誤或電纜系統有問題。最好與對某臺 “設置良好” 主機的 ping 結果進行對比。
    DHCP是基于UDP協議工作的服務,該服務工作于UDP的67和68號端口。其中,UDP 67號端口作為DHCP客戶端廣播請求,UDP 68號端口作為DHCP服務器回應廣播請求。我們可以借助Nmap的broadcast-dhcp-discover.nse和dhcp-discover.nse腳本來實施DHCP服務掃描。下面介紹使用這兩個腳本實施DHCP服務掃描的方法。
    NetCat,在網絡工具中有“瑞士軍刀”美譽,其有Windows和Linux的版本。因為它短小精悍、功能實用,被設計為一個簡單、可靠的網絡工具,可通過TCP或UDP協議傳輸讀寫數據。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类