挖掘任意微軟賬戶(hù)接管漏洞贏取5萬(wàn)美元的全過(guò)程

當(dāng)我們收到7位數(shù)的安全碼后,必須輸入該碼,然后才能重置密碼。在這里,如果我們能夠遍歷所有的7位數(shù)的安全碼組合(即10^7=1000萬(wàn)個(gè)密碼),就能夠在未經(jīng)許可的情況下重置任何用戶(hù)的密碼。但是,很明顯,微軟肯定會(huì)設(shè)置速率限制,以防止攻擊者進(jìn)行大量的嘗試。

在這篇文章中,我將為讀者詳細(xì)介紹自己是如何在微軟在線(xiàn)服務(wù)中挖掘到一個(gè)高危安全漏洞的——利用該漏洞,任何人都可以在未經(jīng)用戶(hù)同意的情況下接管任意的微軟賬戶(hù)。目前,微軟安全團(tuán)隊(duì)已經(jīng)修補(bǔ)了這個(gè)漏洞,并為本人頒發(fā)了5萬(wàn)美元的獎(jiǎng)金。

在發(fā)現(xiàn)Instagram賬戶(hù)的接管漏洞之后,我一直在尋找其他服務(wù)中類(lèi)似的漏洞。后來(lái)我發(fā)現(xiàn),微軟也在使用類(lèi)似的技術(shù)來(lái)重置用戶(hù)的密碼,所以,我決定測(cè)試其中是否存在速率限制漏洞。

為了重置微軟賬戶(hù)的密碼,我們需要在“忘記密碼”頁(yè)面中輸入自己的電子郵件地址或電話(huà)號(hào)碼,同時(shí),還要選擇到底使用電子郵件還是手機(jī)號(hào)碼來(lái)接收安全碼。

360截圖16450626515344.png

當(dāng)我們收到7位數(shù)的安全碼后,必須輸入該碼,然后才能重置密碼。在這里,如果我們能夠遍歷所有的7位數(shù)的安全碼組合(即10^7=1000萬(wàn)個(gè)密碼),就能夠在未經(jīng)許可的情況下重置任何用戶(hù)的密碼。但是,很明顯,微軟肯定會(huì)設(shè)置速率限制,以防止攻擊者進(jìn)行大量的嘗試。

360截圖16450626515344.png

我們可以攔截向代碼驗(yàn)證端點(diǎn)發(fā)出的HTTP POST請(qǐng)求,具體如下所示:挖掘任意微軟賬戶(hù)接管漏洞贏取5萬(wàn)美元的全過(guò)程

360截圖16450626515344.png

如上圖所示,我們輸入的1234567安全碼并沒(méi)有以明文形式出現(xiàn)在該請(qǐng)求中,因?yàn)樗紫葧?huì)進(jìn)行加密處理,然后才會(huì)發(fā)送驗(yàn)證。之所以這么做,很可能是為了防止攻擊者利用暴力破解攻擊自動(dòng)攻擊該驗(yàn)證系統(tǒng)。也就是說(shuō),我們無(wú)法使用像Burp Intruder這樣的工具自動(dòng)測(cè)試大量的安全碼,因?yàn)樗鼰o(wú)法處理加密的部分。

360截圖16450626515344.png

經(jīng)過(guò)一段時(shí)間后,我終于弄明白了這里使用的加密技術(shù),并實(shí)現(xiàn)了從加密安全碼到發(fā)送多個(gè)并發(fā)請(qǐng)求的整個(gè)過(guò)程的自動(dòng)化。

初步測(cè)試顯示,正如預(yù)期的那樣,這里的確存在速率限制。在發(fā)送的1000個(gè)安全碼中,只有122個(gè)被放行,其他的安全碼都被阻止了,并顯示出錯(cuò)代碼1211;也就是說(shuō),如果我們連續(xù)發(fā)送請(qǐng)求,超出一定的數(shù)量之后,系統(tǒng)會(huì)阻止相應(yīng)的用戶(hù)賬戶(hù)進(jìn)一步發(fā)送發(fā)送請(qǐng)求。

360截圖16450626515344.png

然后,我試著像對(duì)Instagram那樣同時(shí)/并發(fā)發(fā)送請(qǐng)求,雖然這種方式使我可以發(fā)送大量請(qǐng)求而不被阻止,但仍然無(wú)法在注入正確的7位安全代碼時(shí)獲得成功的響應(yīng)。我認(rèn)為他們肯定采取了某些控制措施來(lái)防止這種類(lèi)型的攻擊。盡管在發(fā)送正確的安全碼時(shí)收到了出錯(cuò)信息,但仍然沒(méi)有像我們?cè)谧畛醯臏y(cè)試中看到的那樣阻止用戶(hù)的跡象。所以,我認(rèn)為還是有機(jī)會(huì)的。

360截圖16450626515344.png

過(guò)了些日子,我突然意識(shí)到,如果我們發(fā)送的所有請(qǐng)求沒(méi)有同時(shí)命中服務(wù)器,他們就會(huì)把IP地址列入黑名單,因此,哪怕請(qǐng)求之間只有幾毫秒的延遲,也能讓服務(wù)器檢測(cè)到攻擊并阻止該攻擊。因此,我調(diào)整了自己的代碼,以處理這種情況,并再次進(jìn)行了測(cè)試。

360截圖16450626515344.png

出乎意料的是,這次竟然成功了——這次收到了成功的響應(yīng)。

360截圖16450626515344.png

為此,我發(fā)送了1000個(gè)左右的七位數(shù)安全碼,其中包括正確的安全碼,之后就可以進(jìn)入修改密碼的步驟了。

需要注意的是,上面描述的方法僅適用于沒(méi)有啟用雙因素認(rèn)證的用戶(hù);如果用戶(hù)啟用了2FA,我們首先需要繞過(guò)雙因素碼認(rèn)證,然后才能修改密碼。

我測(cè)試了一個(gè)啟用了2FA的賬號(hào),發(fā)現(xiàn)他們使用的都是同一個(gè)終端,并且都容易受到這種攻擊的威脅。一開(kāi)始,用戶(hù)會(huì)被提示輸入一個(gè)由身份驗(yàn)證器應(yīng)用程序生成的6位數(shù)安全碼,然后才會(huì)被要求輸入發(fā)送到他們的電子郵件或電話(huà)號(hào)碼的7位數(shù)的安全碼。之后,他們就可以修改密碼了。

綜合來(lái)看,攻擊者必須發(fā)送所有可能的6位和7位數(shù)的安全碼,為此,大約需要進(jìn)行1100萬(wàn)次的請(qǐng)求嘗試,而且必須同時(shí)發(fā)送,只有這樣才能修改任意微軟賬戶(hù)的密碼(包括那些啟用2FA的賬戶(hù))。

要發(fā)送如此大量的并發(fā)請(qǐng)求,可不是一件容易的事情,因?yàn)檫@需要大量的計(jì)算資源以及數(shù)以千計(jì)的IP地址才能成功發(fā)動(dòng)該攻擊。

我立即錄制了攻擊過(guò)程的相關(guān)視頻,并與重現(xiàn)該漏洞的詳細(xì)步驟一起提交給了微軟。之后,他們很快就確認(rèn)了這個(gè)安全漏洞。

該漏洞已經(jīng)于2020年11月得到了修復(fù),但是,剛開(kāi)始的時(shí)候,他們并不認(rèn)為這是一個(gè)提權(quán)漏洞。于是,我要求他們重新考慮漏洞的性質(zhì),經(jīng)過(guò)多次交涉之后,微軟終于將漏洞歸類(lèi)為提權(quán)漏洞(同時(shí),還涉及多因素認(rèn)證繞過(guò)漏洞)。鑒于該攻擊的復(fù)雜性,該漏洞的嚴(yán)重性被被定為“重要”而非“嚴(yán)重”。

來(lái)自MSRC的Bount電子郵件:

360截圖16450626515344.png

微軟確認(rèn)了本文報(bào)告的漏洞:

360截圖16450626515344.png

2021年2月9日,我通過(guò)hackerone收到了5萬(wàn)美元的賞金,并在3月1日獲準(zhǔn)發(fā)表這篇文章。在這里,我要特別感謝Dan、Jarek和整個(gè)MSRC團(tuán)隊(duì),感謝他們耐心傾聽(tīng)我的所有意見(jiàn),提供更新并修復(fù)了該漏洞。同時(shí),這里也要感謝微軟的慷慨。

本文翻譯自:https://thezerohack.com/how-i-might-have-hacked-any-microsoft-account

THEEND

最新評(píng)論(評(píng)論僅代表用戶(hù)觀點(diǎn))

更多
暫無(wú)評(píng)論