子域名接管 是做什麼的?
子域名接管檢測與利用手冊。當目標存在懸空的 CNAME/NS/MX 記錄,指向已撤銷的雲端資源、過期的第三方服務或未認領的 SaaS 租戶時使用,攻擊者可註冊這些資源以在受害者域名下提供內容。
概述
子域名接管漏洞發生在組織建立指向外部服務(例如 AWS S3、GitHub Pages、Heroku、Azure 等)的 DNS 記錄,但隨後刪除或停用該資源而未移除 DNS 記錄時。攻擊者可註冊該資源(例如在 AWS 建立相同的 S3 Bucket)並透過該域名提供任意內容,導致權限提升、憑證竊取或聲譽受損。
支援的服務
- AWS S3 - 檢查懸空的 CNAME 並驗證 S3 Bucket 是否可註冊
- GitHub Pages - 偵測指向未設定自訂域名的 GitHub Pages 的 CNAME 記錄
- Heroku - 驗證 Heroku 應用程式是否存在
- Azure - 檢查 Azure 服務的接管
- CloudFront - 偵測棄用的 CloudFront 分配
使用方式
偵測流程
- 被動列舉: 使用公共數據庫(如 crt.sh、SecurityTrails)收集子域名
- DNS 解析: 針對每個子域名,取得
CNAME、NS、MX記錄 - 服務比對: 將記錄值與已知的懸浮服務模式比對
- 主動驗證: 向目標服務發送 HTTP 請求,檢查是否返回「未找到」或「無效」錯誤
利用步驟
一旦確認可接管:
- 在對應的雲端平台註冊資源(例如在 AWS 建立同名的 S3 Bucket)
- 上傳任意內容(使用平台提供的預設或自訂標頭)
- 等待 DNS 傳播(通常幾分鐘內)
- 使用 CTF 的漏洞利用代碼進行驗證
工具整合
- subfinder: 被動子域名枚舉
- httpx: HTTP 服務探測
- nuclei: 針對特定服務的模板化掃描
參考資料
- EdOverflow/can-i-take-over-xyz - 子域名接管指標的廣泛列表
- HackerOne 報告 - 實際案例
注意事項
- 永遠不要接管未經明確授權的子域名
- 修復優先於利用:通知相關團隊移除懸浮的 DNS 記錄
- 使用孤立的測試環境進行練習