當前位置:
首頁 > 新聞 > 如何在Microsoft Translator中越權刪除1.3萬個項目

如何在Microsoft Translator中越權刪除1.3萬個項目

概述

有一段時間,我致力於尋找微軟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)。

與此前微軟安全確認計劃需要的漫長時間不同,這一次從漏洞提交到修復,只花費了兩周左右的時間,可以說是非常高效了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

沒想到吧!ISP竟然會共享你的DNS查詢數據
iPhone接收Taiwan旗幟表情時奔潰——遠程IOS bug?

TAG:嘶吼RoarTalk |