子域名劫持漏洞的挖掘指南、子域名劫持怎麼檢測
在HackerOne實時更新的公開漏洞推送Hacktivity訊息中,我們可以發現,其中的子域名劫持漏洞(Subdomain Takeover)佔比不少。自從2014年Detectify實驗室釋出了一系列子域名劫持攻擊姿勢的文章之後,眾測行業出現了大量此類問題相關的上報漏洞。
子域名劫持漏洞的基本前提可以大致的解釋為,發生了錯誤配置情況,對應主機指向了一個當前未在用的特定服務,這樣一來,攻擊者就能透過在該特定的第三方服務中註冊賬戶,宣告對該子域的接管許可權,由此,在該子域上部署網路服務,實現對該子域有目的的利用。作為一位白帽和安全分析師,我每天都會遇到這類漏洞問題。今天,我就來和大家聊聊子域名錯誤配置導致的子域名劫持漏洞相關的理解、挖掘、利用和上報,文章假設讀者具備了一定的DNS知識和子域名設定基礎。
子域名劫持漏洞介紹
如果你此前不瞭解子域名劫持漏洞,想從基本原理聽起,我這裡就設計了一個簡單的例項場景。在該場景中,假設example.com是你在參與漏洞眾測的目標網站,經過對example.com的所有子域名進行列舉之後,發現了其中一個子域名subdomain.example.com,該子域名錯誤配置指向了一個GitHub頁面。由此,我們可以先來看看該子域名的DNS記錄,在這裡假設該子域名所屬的GitHub頁面存在多條指向GitHub特定IP地址的A記錄:
$ host subdomain.example.comsubdomain.example.com has address 192.30.252.153subdomain.example.com has address 192.30.252.154$ whois 192.30.252.153 | grep "OrgName"OrgName: GitHub, Inc.
網頁訪問subdomain.example.com後,我們可以發現以下404響應頁面:
看到這裡,大多數白帽可能會覺得有戲了。這個404頁面表示,在域名對應網站的頂級根目錄下沒被註冊部署任何網頁內容,因此,我們可以嘗試去註冊把該子域名接管為我們個人的GitHub庫所有。但是,請注意,出現這種情況,並不代表所有對應的域名都存在劫持漏洞。因為有一些域名應用可能還需要檢查具體的HTTP和HTTPS響應情況,以此來判斷域名控制許可權,而另外有些域名就不存在劫持漏洞。
這裡,假設就存在子域名劫持漏洞吧。當我們把該子域名新增進入個人 GitHub 專案之後,就能把它部署上我們自己的Web內容了,也就是說,我們就能把子域名接管為我們自己所有了。如下可以讓subdomain.example.com指向任何你部署的網頁內容:
二階子域名劫持漏洞
這裡所說的二階子域名劫持漏洞,有點像過期壞鏈劫持(Broken Link Hijacking),這種情況下的子域名,並不屬於目標網站所有,但卻是用來執行目標網站的網頁內容的。也就是說,如目標網站網頁內容中某個資源需要從外部匯入的第三方資源,舉例來說,像js檔案一樣,那麼,攻擊者就可以透過JavaScript的Blob物件型別進行匯入,從而宣告對目標網站相關子域名的控制許可權。
這種在網頁頁面的主機劫持可以導致儲存型跨站漏洞,攻擊者可以針對目標網站頁面,利用這種模式來載入任意的客戶端程式碼。我在此提出這種威脅,就是希望我們不要把想像力只限制在子域名身上,還可以延伸到程式碼審查和目標網站的主機對映等方面。
像下圖網站中,存在匯入的第三方資源,那麼,能否存在subdomain.example.com可被劫持,從而我可以變換script.js實現對example.com的間接劫持呢?
當然,也要說明的是,如果你想對某個子網站域名進行劫持,那麼可以花點時間,去看看該網站上各個頁面中的第三方匯入資源是否能被劫持利用。
子域名列舉和探測
現在,我們對如何在錯誤配置的子域名上部署我們自己的網頁內容有了大致瞭解,接下來,我就來介紹發現漏洞子域名的各種技術、技巧和工具。
在深入之前,我們需要區分檢索( Scraping )和暴力猜解(Brute Forcing)的不同,因為這兩種方法都能幫助你發現子域名,但最終結果卻有所不同。檢索是一種被動的偵測方式,它利用DNS Dumpster和VirusTotal等外部服務和資源,來收集屬於某個特定主機的子域名。這種方式能快速檢索出外部服務資源中之前載入過的子域記錄,算是一種不費太多精力的子域名發現方式。如以下DNS Dumpster網站中記錄的reddit.com子域名情況:
檢索( Scraping )方式中不僅中以包含索引頁面,還可以新增進目標網站的GIT庫、內容安全策略頭、原始碼和漏洞跟蹤訊息等反饋源,只要你能想得到,檢索列表是非常之多的。我就經常更新我自己的檢索列表資源庫,反正你應用的技術越多越奇特,那麼最終你發現的結果也會與眾不同。所以,從這一點來說,在做漏洞眾測時,我們一定要具備創新精神。
Sublist3r算是檢索( Scraping )方式的一個簡單子域名發現工具了,它利用了輕量級的Python指令碼,從各種搜尋引擎、SSL證照和DNS記錄網站中來收集目標子域名。具體的安裝和應用
檢索( Scraping )方式中不僅中以包含索引頁面,還可以新增進目標網站的GIT庫、內容安全策略頭、原始碼和漏洞跟蹤訊息等反饋源,只要你能想得到,檢索列表是非常之多的。我就經常更新我自己的檢索列表資源庫,反正你應用的技術越多越奇特,那麼最終你發現的結果也會與眾不同。所以,從這一點來說,在做漏洞眾測時,我們一定要具備創新精神。
Sublist3r算是檢索( Scraping )方式的一個簡單子域名發現工具了,它利用了輕量級的Python指令碼,從各種搜尋引擎、SSL證照和DNS記錄網站中來收集目標子域名。具體的安裝和應用
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990085/viewspace-2741950/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 域名劫持 dns,域名劫持,dns劫持是什麼,瞭解域名劫持DNS
- 如何防止域名被劫持?網站域名被劫持怎麼辦?怎麼處理?網站
- 怎麼檢視域名是否被劫持沒有、如何判斷網站域名是否被劫持?網站
- 域名被牆、dns劫持汙染、都有什麼方法、防止域名被牆dns劫持汙染方法DNS
- DNS域名劫持,被惡意DNS域名劫持了需要了解這些DNS
- 怎麼檢測dns是否遭受劫持、dns遭受劫持怎麼做DNS
- 百度域名劫持案,網站域名被劫持後的處理方法網站
- 網站 DNS劫持 檢測,網站被DNS劫持該怎麼檢測出來網站DNS
- 怎麼檢測瀏覽器劫持,瀏覽器劫持的方法介紹瀏覽器
- 域名劫持資源重載入方案
- 部署子域名
- 什麼是子域名?主域名和子域名之間有哪些關係和區別?
- #使用C#winform編寫滲透測試工具--子域名挖掘C#ORM
- 什麼是子域名?如何設定子域名解析?
- dns劫持,dns劫持是什麼,該怎麼去預防dns劫持DNS
- 微信域名檢測,域名攔截檢測介面
- QQ/微信域名檢測-域名檢測官方介面
- 使用nginx配置子域名Nginx
- app安全:如何應對介面劫持、介面劫持如何檢測APP
- DLL劫持漏洞自動化識別工具Rattler檢測
- dns劫持怎麼解決 dns劫持的解決方法DNS
- 微信/QQ域名檢測-最新騰訊域名檢測官方介面
- 微信域名檢測-域名攔截檢測介面(官方api)分享API
- DNS原理及劫持問題、dns劫持怎麼解決DNS
- 深入解析DLL劫持漏洞
- JSON劫持漏洞分析JSON
- 網站出現百度蜘蛛 域名劫持問題的解決方法網站
- 流量劫持,分析為什麼會流量劫持,流量劫持危害大麼
- 微信域名檢測原理 批次檢測域名是否被微信攔截
- 微信域名檢測官方介面 微信域名實時檢測系統
- Laravel-admin 配置子域名Laravel
- Docker Nginx 配置多個子域名DockerNginx
- 子域名/目錄暴力工具GobusterGo
- 新的亞馬遜 Kindle 漏洞可能讓攻擊者劫持您的電子書閱讀器亞馬遜
- 微信域名檢測 微信域名檢測官方介面的呼叫程式碼分享
- 頁面劫持,頁面劫持,如果被頁面劫持了該怎麼去解決,方法分享
- DNS劫持是怎麼回事?DNS劫持如何預防?(國科雲)DNS
- 微信域名防封技術-微信域名封禁檢測