近日,intezer研究人員在Microsoft Azure發現了2個安全漏洞。漏洞存在于Azure App Services 云服務中,主要影響Linux 服務器。攻擊者利用第一個漏洞可以訪問云服務器,并完全控制App Service的git庫,并植入可以通過Azure Portal 訪問的釣魚頁面。攻擊者利用第二個漏洞可以利用一個SSRF 漏洞來提權到APP Service的完全代碼執行,觸發第一個漏洞。PoC視頻如下所示:
[[345093]]
Azure App Services
Azure App Services是一個基于HTTP的web應用托管服務,可以通過Microsoft Azure Cloud 云或安裝來使用。App Services 允許開發者寫一個應用來服務HTTP,然后推送給git。然后Azure會處理所有的部署詳情并提供Azure管理的域名。
為開始使用App Services,用戶必須首先創建一個App Service Plan,這是App Services將要使用的機器。機器的主要目的是托管App Service 容器。
一旦用戶創建了App Service,Azure就會創建一個包含2個容器節點的新的Docker環境:管理節點和應用節點。然后回注冊2個域名:
· app.azurewebsites.net – 指向應用的HTTP web服務器;
· app.scm.azurewebsites.net – 指向Azure提供的App Service管理頁面。

管理頁面是由微軟開源項目Kudu提供的。在Linux 系統中,有一個類似的項目叫做KuduLite。Kudu實例由管理節點托管,而應用本身由應用節點托管。
在Linux系統中,KuduLite 實例回提供給用戶關于系統的診斷信息,包括Docker日志、設置和其他環境信息。如果用戶選擇用Azure 托管app的git,就會由Kudu 服務管理。
另一個有用的特征是kudu實例中運行交互式bash的web接口和另一個名為webssh的web接口。
app節點中的有用會以root權限運行,研究人員可以通過SSH 以root權限登入。在訪問Kudu 實例時,實際上是一個低權限的用戶:

該用戶只能與/home交互,并且無法在其他目錄中寫文件。但在該實例中安裝了ClamAV。
Linux App Services環境如下圖所示:

漏洞 1: KuduLite Takeover/EoP
在調查webssh如何連接到web接口到應用節點的SSH服務,研究人員發現其使用硬編碼的憑證“root:Docker!” 來訪問應用節點:

因為KuduLite 實例也運行SSH,所以就可以用相同的憑證來以root權限登陸:

因為可以控制KuduLite,因此可以完全控制SCM web服務器。可以監聽用戶發送給SCM web頁面的HTTP請求、添加自己的頁面、注入惡意JS內容到用戶web頁面。
研究人員首先嘗試從發送給服務器的請求中竊取SCM 用戶cookie。此外,cookie還有一個HttpOnly 屬性,也就是說無法用客戶端瀏覽器的JS竊取。
但攻擊者仍然可以利用該漏洞來植入一個偽裝成SCM web頁面的釣魚頁面。用戶可以選擇App Services 來管理git 服務器,攻擊者可以添加惡意代碼到庫中來實現駐留并傳播到其他使用相同的git 服務器的實例。
漏洞2: KuduLite缺乏訪問限制允許本地文件包含或遠程代碼執行
第二個漏洞位于KuduLite API 中,與Kudu的 API非常類似。應用節點可以在無需任何訪問驗證的情況下發送請求到KuduLite API。當web app中含有SSRF 漏洞時問題就很嚴重了。
能夠偽造GET 請求的攻擊者可能可以通過KuduLite VFS API 來訪問應用節點的文件系統:

攻擊者可以很輕易地竊取應用節點的源碼和其他資產。
可以偽造POST 請求的攻擊者可以通過命令API 在應用節點上實現遠程代碼執行:

相比之下,在Windows 中,從應用節點發送給管理節點的包會被丟棄。
最后,這兩個漏洞被串起來后,攻擊者就可以實現遠程代碼執行。
總結
云服務使得開發者可以快速和靈活地部署應用。但這些基礎設施常常會存在漏洞。研究人員在微軟Azure App Services中發現了2個安全漏洞,攻擊者利用這2個安全漏洞可以實現遠程代碼執行。研究人員將該漏洞提交給了微軟,目前漏洞已經修復。
本文翻譯自:https://www.intezer.com/blog/cloud-security/kud-i-enter-your-server-new-vulnerabilities-in-microsoft-azure/如若轉載,請注明原文地址: