如何在微軟 Translator中越權刪除1.3萬個項目
來自專欄嘶吼RoarTalk6 人贊了文章
概述
有一段時間,我致力於尋找微軟Web服務中的漏洞,由於微軟擁有龐大的在線基礎設施,因此我認為漏洞的發現並不困難。在瀏覽他們的在線服務時,其中的Microsoft Hub Translator翻譯服務引起了我的注意。
根據官方介紹,Microsoft Translator Hub能夠使企業和個人構建、訓練並部署一套定製化的自動語言翻譯系統。
於是,我註冊了該系統的賬戶,並開始尋找漏洞。最終,我成功發現了一個高危漏洞,藉助該漏洞,攻擊者可以刪除全部Microsoft Hub Translator項目,這些項目共有1.3萬個以上。由於目前漏洞已經修復,因此本文將對漏洞細節做重點分析。
技術細節
Microsoft Hub Translator允許用戶創建自定義的自動語言翻譯系統。因此,我註冊並創建了一個系統,顯然該系統只是為了尋找漏洞,但我並不了解該系統實際上的全部功能。在嘗試過程中,我創建了一個名為「huntingbugs」的項目。
如大家所見,該項目有「編輯」和「刪除」功能。如果用戶點擊「刪除」,就會刪除該項目,這一操作非常簡單。在這時,我啟動了Burp Suite並開始攔截HTTP請求。下面是「刪除」的HTTP請求。
「刪除項目」操作的HTTP請求:
POST /Projects/RemoveProject?projectId=12839 HTTP/1.1 Host: hub.microsofttranslator.com User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: https://hub.microsofttranslator.com/Projects/Index Cookie: RPSAuth=FABKARSt1lMxfQ39EcbVsLWT8hLbEL12RANmAAAEgAAACI6Hs92zqyRlCAGce1EqwSJmjJe21nXVHarrEJ9ROzjj21XAthl%2BUUjzX3XR5JeCB8WI0oMdmwQhyn30OIiubBYaeLeg21nqXT06UwzczFIDAjoqU%2BQpCg9SWaLSVSC3aKMZPT92NVjgySbIV8YYxPA4XMVMbU04mvNKv8v5vaGVMUNBtjHldxFqKYEWqI5P0UZetmtagzOK%2Bf2CRFbgb3Gak68RN6Mjj/xXt2ovC8pxYn2qb9MqSNxHC4Y3bA8n6vyZoJzM6Uu0zZpTUPIhv5L1PyHOO3FdXFELqttx2Yd2LEJNvxjkmON9KcYXIR%2BlUsHfimE901msD9XWB1SLG3zvm06oacncf1WGrdjEdnA2lOgUALlEhQzxHbGm6TryDMpq%2BbrTU/wG; RPSSecAuth=FABKARSt1lMxfQ39EcbVsLWT8hLbEL12RANmAAAEgAAACKDdutui3VqgCAE5DVaipcaF6WaWT%2B0L0ppLMAd7kigpYcQ89xhwiDiYN9yNhyVf86EW6KiiOs7FY2PCTFH2rM/uH3LYLIhTEYturZ5vOjVPBUP6QqqAtP9rvUCtv9%2Bakv9WNwY4gpZzQ4SXjtVpSMqyrV3RIN/emocWtNDmU5BPrnAZk50oAnoSf6aJX5IjaNcXc61Tv3BSO6m3GKLevxWnpSoyLzIajETwMSBe84fL5fWyUI0r3jXq7rW/rUh/Go/R4OzS2nL1okl512yFcZFZFXdsEq6k5M0lKP0L9ZTVtaW0WiZKXKgY%2B%2BPPtImjI5whKX2U4wbqgPiD1rxXwDogAlcrLKu6YGEHfVg01iG0GQ0UAF%2BhVQ4CptuuRm8tI8XE9zmo3%2Bhr; ANON=A=365DFF2DD45617971705DA33FFFFFFFF&E=1089&W=1; NAP=V=1.9&E=102f&C=h8ZS17Xmf0z4Q2T9Dj26e_Pijaca9G00g1PJCcXaI36L1P7jWHYOFQ&W=1; mstcid=[RemovedEmail] Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 0
我們看到,在URL中的POST請求並沒有內容和參數,這讓人覺得有點奇怪。上述請求中的「projectid」參數是資料庫中單個項目的ID,在我們的嘗試中這一參數為「12839」。通過觀察上面的HTTP請求,我們發現一個簡單的刪除項目操作可能是這樣的:
Delete project FROM projects WHERE projectid=12839;
在轉發HTTP請求之後,我們的項目「12839」被刪除,這時沒有任何異常。
如果我們查看請求,首先會注意到沒有CSRF保護。這樣一來,就很容易發生CSRF攻擊。簡而言之,CSRF漏洞允許攻擊者偽裝成合法登錄的用戶,並以他們的許可權執行操作。我們考慮以下場景:
1、一位合法的用戶已經登錄;
2、攻擊者在頁面中包含一個URL(可以通過img標籤、iframe等很多種方式):http://hub.microsofttranslator.com/Projects/RemoveProject?projectId=12839 ;
3、被攻擊用戶訪問該頁面,上述請求將從他們的瀏覽器中發出;
4、要有效執行這一攻擊,必須首先知道被攻擊用戶的ProjectID編號;
5、由於該網站沒有防範CSRF的Token這樣的CSRF防護措施,因此會導致該項目被刪除;
6、即使這一網站有防範CSRF的措施,也可以採用CSRF Token繞過的方式。
越權刪除項目
接下來,我們再看看刪除項目的HTTP請求。我們嘗試著對projectID的值進行修改,並提交請求。為了測試這一行為,我又註冊了另一個賬戶,並且從不同的瀏覽器登錄,創建了兩個新項目。
回到Burp Suite,並開始使用projectID參數值進行模糊測試。我將ID參數由實際項目編號修改為第二個賬戶中創建的項目的ID值,並發送請求刷新頁面。
我在HTTP請求中,通過修改projectID成功實現了越權刪除項目。從技術上來說,這一漏洞屬於間接對象引用。現在,我只需要循環嘗試0到13000(最後一個項目)的值,就可以從資料庫中刪除所有項目。為了防範這一漏洞,需要在這裡進行嚴格校驗,判斷用戶所請求的項目是否屬於其本人創建,然而微軟卻忽略了這一點。
提交漏洞及相關反饋
我通過微軟的安全確認計劃,報告了這一漏洞。他們最初回應如下。
並且,將我加入到了微軟安全研究者名人堂中(Microsoft Hall of fame for Security Researchers)。
與此前微軟安全確認計劃需要的漫長時間不同,這一次從漏洞提交到修復,只花費了兩周左右的時間,可以說是非常高效了。
本文翻譯自:https://haiderm.com/how-i-was-able-to-delete-13k-microsoft-translator-projects/如若轉載,請註明原文地址: http://www.4hou.com/vulnerable/12767.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※macOS木馬Calisto深度分析
※Facebook又被曝出數據泄露事件,牽涉用戶多達1.2億
※Sqli-Labs注入靶機實戰演練
※2017年上半年信息安全工程師考試真題含答案(下午題)
※量子密碼學介紹
TAG:信息安全 |