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