12.03 BlackDirect:Microsoft Azure帳戶接管

在過去的幾周裡,我和我的團隊一直致力於Microsoft Azure和Microsoft OAuth 2.0相關的研究,並發現了一個漏洞,可導致微軟Azure賬戶被接管。這和特定的Microsoft OAuth 2.0應用有關,攻擊者可創建具有受害者權限的令牌。

OAuth應用信任域和子域有些未被Microsoft註冊,因此任何人(包括攻擊者)都可以註冊它們。這些應用在默認情況下都被允許請求“access_token”。這兩個因素的結合使得在用戶權限限定下的操作得以進行——包括獲得對Azure資源、AD資源的訪問權限。

作為研究的一部分,我們開發了一個自動掃描應用,這樣每個人都能夠在他們的Azure環境中發現上述漏洞。

https://black.direct/

此外,該網站還包括BlackDirect的更多細節。

OAuth是什麼?

OAuth是一種授權協議,通常被終端用戶用來授予某個網站或應用從其他網站訪問其信息的權限,而且無需提供網站或應用的登錄密碼。許多互聯網公司都在廣泛使用,方便用戶與第三方應用或網站共享有關其帳戶的信息和數據。

而下一代OAuth協議(OAuth2)允許第三方應用以資源所有者的名義獲得對HTTP服務的有限訪問權。訪問是由客戶端發起,它可以是一個網站或一個移動應用。

協議理論上是安全的,但錯誤的實現或不恰當的使用就會引發安全隱患。在授權過程中,第三方公司或應用獲得具有特定權限的令牌,以代表令牌所屬的用戶進行操作。從這個角度來看,在大多數情況下,擁有高權限OAuth2令牌等同於擁有帳戶本身的用戶名和密碼。如果攻擊者竊取這樣的令牌,在某些情況下,它還能繞過諸如雙因素認證之類的安全限制。

當我們討論令牌時,需要記住兩種主要令牌類型。永久令牌稱為“Refresh Token”,臨時令牌稱為“Access Token”。Refresh Token用於驗證身份和獲取access token(訪問令牌)。

BlackDirect漏洞

根據RFC的說法,實現OAuth 2.0“授權請求”的方法之一是使用“redirect_uri”將令牌傳遞給應用處理程序(“redirect_uri”代表生成的OAuth令牌被傳遞的目的地,也就是特定的URL)。

“ReplyUrls”是一個URL白名單,它是應用的設置之一,以確定哪些URL和主機可以獲得為應用生成的令牌。換句話說,“ReplyUrls”等同於“redirect_uri”。

BlackDirect:Microsoft Azure帳戶接管


影響OAuth應用的一個可能的攻擊是“redirect_uri”的配置錯誤。將一個不存在的域列入白名單可讓攻擊者通過傳遞令牌到所掌控的域/子域來竊取訪問令牌。這可能引發一系列危險操作。

通過研究,我們發現微軟發佈的一些Azure應用程序(也稱為第一方應用程序)容易受到這種類型的攻擊。如果攻擊者獲得了Microsoft信任的域和URL的控制權,則Microsoft發佈的應用可幫助攻擊者引導受害者自動生成具有其權限的訪問令牌,只需讓受害者點擊一個鏈接或訪問一個網站即可實現(只需簡單的社會工程學)。

對攻擊者來說,這種應用程序比其他應用程序更有價值,因為它們在任何Microsoft帳戶中都是自動被認可的,攻擊者不需要用戶同意就可以利用它們來生成令牌。同時,也不可能從Microsoft Account的名單中刪除它們,有些甚至都沒有出現。

接管URL

通過使用“Get-AzureADServicePrincipal”命令,我可以列出帳戶中的所有服務主體。

查看Microsoft應用中一些白名單的URL,我注意到一些以“.cloudapp.net”、“.azurewebsites.net”和“. {vm_region}.cloudapp.azure.com”結尾的數據,這些URL都可以通過Azure門戶進行註冊。

為了確保沒有真正的攻擊者能夠利用這個漏洞,我註冊了每一個還沒有被註冊的子域——一共54個。

BlackDirect:Microsoft Azure帳戶接管



可以被利用的應用如下:

  • Portfolios
  • O365 Secure Score
  • Microsoft Service Trust

結合利用

在這一節中,我將描述如何通過已控制的處於白名單的URL構造出一個惡意鏈接,讓受害者無意識地給我們提供“access_token”。

要啟動Web OAuth認證流程,需要瀏覽一個類似如下的鏈接:

https://login.microsoftonline.com/common/oauth2/authorize?response_type=token&client_id={CLIENT_ID}&resource={RESOURCE}&redirect_uri={REDIRECT_URI}

為了利用這個漏洞,我們必須設置好參數,以及使令牌有效的所需資源。

client_id是指應用id,resource是指有效令牌對應的資源,redirect_uri是指令牌將傳遞給的域/URI。

假設攻擊場景如下:

攻擊者代表在https://graph.windows.net具有user_impersonation權限的用戶請求令牌——也就是每個應用默認得到的權限——可以執行各類API請求,包括重置AD中其他用戶的密碼,將成員添加到一個目錄角色或添加用戶到組(取決於受害者的權限)。你可以在這裡看到更多的API調用。

這個漏洞使攻擊特權用戶變得更加容易——無論是通過簡單的社會工程學,還是攻擊受害者偶爾訪問的網站。無論如何,都很可能導致整個域和組織的Azure環境全面陷落。

攻擊向量

無需點擊

1.攻擊者針對Microsoft OAuth Web流程創建了一個惡意鏈接(設置application_id以匹配易受攻擊的OAuth應用,將redirect_uri設置白名單中已控制的域,將resource設置為攻擊者希望訪問的資源。

2.攻擊者在網站中嵌入一個iframe,並將“src”屬性設置為上一步的惡意鏈接。

3.引誘受害者瀏覽網站。受害者的瀏覽器會渲染iframe, microsoftonline.com將用訪問令牌將其重定向到攻擊者的所控制的域。

4.在攻擊者域中運行的JS代碼使用竊取到的訪問令牌發送API請求。

一次點擊

1.攻擊者如上所述創建了一個惡意鏈接。

2.受害者點擊惡意鏈接,microsoftonline.com將用訪問令牌將其重定向到攻擊者的所控制的域。

3.在攻擊者域中運行的JS代碼使用竊取到的訪問令牌發送API請求。

PoC

BlackDirect:Microsoft Azure帳戶接管


https://www.cyberark.com/wp-content/uploads/2019/12/blackdirect_poc.mp4

雖然OAuth 2.0是一種優秀的授權解決方案,但如果使用不當或配置不當,它可能會產生巨大的安全威脅,特別是第三方應用可能會擁有過高的權限,導致帳戶被接管。

對於以上漏洞,用戶能做的不多——微軟必須發佈補丁進行修復。

時間表

2019.10.29——發現漏洞

2019.10.30——漏洞報告給微軟

2019.10.31——微軟關閉了報告?

2019.11.07——再次報告給微軟

2019.11.08——微軟進行處理

2019.11.12——微軟和我們聯繫

2019.11.20——漏洞修復


本文由白帽彙整理並翻譯,不代表白帽匯任何觀點和立場

來源:https://nosec.org/home/detail/3246.html

原文:https://www.cyberark.com/threat-research-blog/blackdirect-microsoft-azure-account-takeover/

白帽匯從事信息安全,專注於安全大數據、企業威脅情報。

公司產品:FOFA-網絡空間安全搜索引擎、FOEYE-網絡空間檢索系統、NOSEC-安全訊息平臺。

為您提供:網絡空間測繪、企業資產收集、企業威脅情報、應急響應服務。


分享到:


相關文章: