子域名劫持即攻擊者可以聲稱接管某站點(diǎn)的子域名
Tips
- 利用KnockPy等工具發(fā)現(xiàn)子域名,尤其注意這些子域名是否指向第三方服務(wù)恨樟,比如AWS, Github, Zendesk, Fastly等等,因?yàn)檫@些服務(wù)允許你注冊(cè)自定義的URL
- 直接注冊(cè)那些子域名指向的過(guò)期域名
- 對(duì)于無(wú)法接管的子域名倔既,可以嘗試通配符子域名
- 不要只限于子域名本身牛曹,網(wǎng)站引入的外部資源也可以嘗試?yán)茫鏹s朽寞。
- 耐心看文檔非常重要
實(shí)例:Ubiquiti子域名劫持
assets.goubiquiti.com有一DNS條目指向了Amazon S3的文件存儲(chǔ)但相應(yīng)的bucket并不存在:
由于Amazon S3提供自定義域名服務(wù),攻擊者直接接管了 uwn-images.s3-website-us-west-1.amazonaws.com并部署了測(cè)試站點(diǎn)斩郎。
實(shí)例:Snapchat Fastly劫持
Fastly是一家CDN服務(wù)提供商脑融,類似的還有Amazon’s CloudFront。
該漏洞發(fā)現(xiàn)者Ebrietas向Snapchat報(bào)告稱由于他們的錯(cuò)誤配置缩宜,http://fastly.sc-cdn.net
有一條CNAME記錄指向了一個(gè)不屬于他們的
Fastly子域名肘迎,訪問(wèn)這個(gè)url會(huì)報(bào)錯(cuò):
“Fastly error: unknown domain: XXXXX. Please
check that this domain has been added to a service.”
關(guān)于Fastly,如果你使用他們的共享通配符證書锻煌,他們會(huì)允許你注冊(cè)一個(gè)自定義的子域名妓布。
然而Ebrietas沒(méi)有馬上利用這個(gè)子域名來(lái)劫持,他先查閱了文檔宋梧,發(fā)現(xiàn)域名遵循以下規(guī)則:EXAMPLE.global.ssl.fastly.net
另外匣沼,Ebrietas做了下面兩件事來(lái)增加報(bào)告的完整性和說(shuō)服力:
- fastly.sc-cdn.net確實(shí)是Snapchat指向Fastly的子域名,可是如何證明sc-cdn.net歸屬于Snapchat捂龄?因?yàn)閺耐獗砜凑娴暮茈y說(shuō)它屬于哪個(gè)公司释涛,于是Ebrietas通過(guò)censys.io查閱了它的SSL證書來(lái)驗(yàn)證。
- 劫持一開始并沒(méi)有顯示出效果倦沧,于是他搭建了一個(gè)服務(wù)器持續(xù)監(jiān)聽(tīng)唇撬,最終收到了請(qǐng)求,證明該子域名確實(shí)在被使用展融。
root@localhost:~# cat /var/log/apache2/access.log | grep -v server-status | gre\
p snapchat -i
23.235.39.33 - - [02/Aug/2016:18:28:25 +0000] "GET /bq/story_blob?story_id=fRaYu\
tXlQBosonUmKavo1uA&t=2&mt=0 HTTP/1.1...
23.235.39.43 - - [02/Aug/2016:18:28:25 +0000] "GET /bq/story_blob?story_id=f3gHI\
7yhW-Q7TeACCzc2nKQ&t=2&mt=0 HTTP/1.1...
23.235.46.45 - - [03/Aug/2016:02:40:48 +0000] "GET /bq/story_blob?story_id=fKGG6\
u9zG4juOFT7-k0PNWw&t=2&mt=1&encoding...
23.235.46.23 - - [03/Aug/2016:02:40:49 +0000] "GET /bq/story_blob?story_id=fco3g\
XZkbBCyGc_Ym8UhK2g&t=2&mt=1&encoding...
43.249.75.20 - - [03/Aug/2016:12:39:03 +0000] "GET /discover/dsnaps?edition_id=4\
527366714425344&dsnap_id=56515658813...
43.249.75.24 - - [03/Aug/2016:12:39:03 +0000] "GET /bq/story_blob?story_id=ftzqL\
Qky4KJ_B6Jebus2Paw&t=2&mt=1&encoding...
43.249.75.22 - - [03/Aug/2016:12:39:03 +0000] "GET /bq/story_blob?story_id=fEXbJ\
2SDn3Os8m4aeXs-7Cg&t=2&mt=0 HTTP/1.1...
23.235.46.21 - - [03/Aug/2016:14:46:18 +0000] "GET /bq/story_blob?story_id=fu8jK\
J_5yF71_WEDi8eiMuQ&t=1&mt=1&encoding...
23.235.46.28 - - [03/Aug/2016:14:46:19 +0000] "GET /bq/story_blob?story_id=flWVB\
XvBXToy-vhsBdze11g&t=1&mt=1&encoding...
23.235.44.35 - - [04/Aug/2016:05:57:37 +0000] "GET /bq/story_blob?story_id=fuZO-\
2ouGdvbCSggKAWGTaw&t=0&mt=1&encoding...
23.235.44.46 - - [04/Aug/2016:05:57:37 +0000] "GET /bq/story_blob?story_id=fa3DT\
t_mL0MhekUS9ZXg49A&t=0&mt=1&encoding...
185.31.18.21 - - [04/Aug/2016:19:50:01 +0000] "GET /bq/story_blob?story_id=fDL27\
0uTcFhyzlRENPVPXnQ&t=0&mt=1&encoding...
這些請(qǐng)求雖然不帶有任何tokens或cookies窖认,但證明了用戶有被提供惡意內(nèi)容的風(fēng)險(xiǎn)。
實(shí)例:api.legalrobot.com
Legal Robot 被發(fā)現(xiàn)有一條CNAME記錄將api.legalrobot.com指向Modulus.io告希,但是沒(méi)有聲明Modulus.io上頁(yè)面的管理權(quán)
根據(jù)Modulus的文檔所說(shuō)扑浸,“任何子域名都可以被指定”,顯然這又是一個(gè)子域名劫持的例子暂雹,然而經(jīng)過(guò)嘗試首装,api.legalrobot.com并不能被聲明创夜,他繼續(xù)嘗試聲明通配符子域名*.legalrobot.com杭跪,這一次成功了。
實(shí)例:Uber SendGrid郵件域名劫持
SendGrid是一個(gè)郵件云服務(wù)提供商,Uber是他們的客戶之一涧尿。Uranium238團(tuán)隊(duì)發(fā)現(xiàn)了Uber的CNAME記錄將 em.uber.com 指向SendGrid系奉。
White-lable 是一種SendGrib用于向ISP展示其被授權(quán)代表用戶(發(fā)件人)發(fā)送郵件的功能。授權(quán)的方式就是將發(fā)件人的域名指向SendGrid姑廉,這種代理模式有助于建立發(fā)件人的信譽(yù)缺亮。
基于這樣的功能,SendGrid可以代表Uber發(fā)送郵件桥言。查看Uber的MX記錄也能發(fā)現(xiàn)萌踱, em.uber.com被指向mx.sendgrid.net。
Uranium238團(tuán)隊(duì)繼續(xù)查閱SendGrid的文檔号阿,觀察有沒(méi)有可以利用的功能并鸵。SendGrid提供了一種入站解析Webhook,可以幫助公司解析接收到的郵件附件和內(nèi)容扔涧,此功能需要兩步配置:
- 將公司域名/子域名的MX記錄指向mx.sendgrid.net
- 將域名和解析API設(shè)置頁(yè)的URL相關(guān)聯(lián)
第一步已經(jīng)配置好了园担,第二步Uber沒(méi)有聲明em.uber.com和任何URL相關(guān)聯(lián),Uranium238團(tuán)隊(duì)替他們完成了枯夜,并測(cè)試了郵件接收功能弯汰。