最近,我好像和星巴克( Starbucks)有緣,連續發現了它的兩個子域名劫持漏洞,囊獲了$4000美金。其中,第一個漏洞是基于微軟的Azure云服務發現的,這一次的第二個漏洞也非常相似,我是利用Azure云服務中的流量管理器(Traffic Manager)來發現的。這篇文章,我就來和大家分享一下這個基于Azure流量管理器的子域名劫持漏洞發現過程。
發現NXDOMAIN響應
某個星期一大早上,我注意到星巴克子域名wfmnarptpc.starbucks.com解析出現了找不到CNAME的NXDOMAIN響應,也就是其域名別名記錄不存在于權威服務器中。但實際上有趣的是,在ANSWER SECTION消息中,卻存在一條記錄,它做了CNAME指向s00149tmppcrpt.trafficmanager.net。憑我的經驗來說,我覺得這種情況可能存在子域名劫持漏洞。因為我上一個子域名劫持漏洞中,也是因為 Azure 的專用IP地址,在CNAME解析時出現了NXDOMAIN響應的情況。我想,這里十有八九也是這種情況。
$ dig a wfmnarptpc.starbucks.com
; > DiG 9.10.6 > a wfmnarptpc.starbucks.com
;; global options: +cmd
;; Got answer:
;; ->>HEADERid: 20251
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;wfmnarptpc.starbucks.com. IN A
;; ANSWER SECTION:
wfmnarptpc.starbucks.com. 33165 IN CNAME s00149tmppcrpt.trafficmanager.net.
Azure 云服務;是一個靈活的企業級公有云平臺,提供數據庫、云服務、云存儲、人工智能互聯網、CDN等高效、穩定、可擴展的云端服務。之前,我也沒提到過 trafficmanager.net 可能存在子域劫持的可能,微軟 Azure 的流量管理器(Traffic Manager)是這樣描述自身功能的:
Azure 流量管理器是一種基于 DNS 的流量負載均衡器,可以在全球 Azure 區域內以最佳方式向服務分發流量,同時提供高可用性和響應性。流量管理器根據流量路由方法和終結點的運行狀況,使用 DNS 將客戶端請求定向到最合適的服務終結點。……,可以在 Azure 外部或非Azure服務端的環境中來部署使用流量管理器。
測試子域名的可注冊性
以上這個說明,按我的意思來理解,簡而言之,是不是說,有一些域名指向了 trafficmanager.net 不存在的子域?這里,恰好又出現了NXDOMAIN響應狀況,那說明星巴克使用了Azure 的流量管理器服務,而且可能存在子域名劫持漏洞。為了證明這種猜測,我們需要看看能不能再注冊 s00149tmppcrpt.trafficmanager.net 這個子域名。幸運的是,Azure并沒有對注冊進行任何域名所有權的身份驗證。
從我之前的介紹和研究來看,到這一步可能還不能說明問題。因為 Azure 中會存在子域名禁用的配置,也就是說,以該域名來說,表面看似存在子域名劫持漏洞,但可能在實際創建注冊的時候又不行。不管那么多,我還是先注冊吧,先在Azure控制面板中注冊一個新的流量管理器配置用戶:
成功實現子域名劫持
好在看綠色打勾處,可以通過!那么子域名劫持一定是存在的了!也就是說,我能把域名 s00149tmppcrpt.trafficmanager.net 注冊為己有,然后進行相關的劫持漏洞測試。注冊成功后,我需要把這個域名指向我自己的服務器:
之后,我只需要在我的服務器中創建一個虛擬主機就行:
然后,這個域名指向就變成了我自己能控制的網站了:
|