<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    從VMware vCenter SSRF漏洞調試來看系統模塊調用與認證機制

    VSole2021-12-04 18:03:39

    最近網上有人爆出了VMware vCenter v7.0.2.00100版本存在未授權SSRF漏洞,相關的POC也已經公開,漏洞本身比較簡單,但是深度分析VMware vCenter相關模塊調用和認證機制還是很有必要的,畢竟作為一名喜歡刨根問底的技術宅男,絕對不能滿足于做一個腳本小子,不知其所以然不足以支撐挖出新的洞洞來。

    調試配置

    在以前的文章中已經介紹過VMware vCenter遠程調試配置方式:

    調試配置參考
    QCyber,公眾號:且聽安全CVE-2021-22005-VMware VCenter Server 從目錄穿越到命令執行(需CEIP開啟)

    這里回顧一下配置方式。漏洞位于`vsphere-ui`服務中,使用如下命令獲取啟動參數:

    tr '\0' ' ' < /proc/PID/cmdline
    

    使用`service-control --stop vsphere-ui`命令停止服務,并在`vsphere-ui.launcher`命令后添加`-Xdebug`調試選項,在`vsphere-ui`用戶下手動啟動命令,隨后8787端口被監聽:

    關閉系統防火墻,使用IDEA遠程連接8787調試端口:


    漏洞復現

    根據公開信息,漏洞url為`/ui/vcav-bootstrap/rest/vcav-providers/provider-logo`,正常訪問時提示url參數不存在。

    通過500錯誤獲取代碼調用棧,最后在`ProvidersController.getProviderLogo`執行時出錯。

    `getProviderLogo`函數代碼比較簡單,通過URLConnection讀取URL并解析。

    首先是可以實現SSRF:

    構造url參數讀取本地配置文件:

    調用機制分析

    漏洞復現不是本文重點,本文重點是分析VMware vCenter相關配置和認證繞過的機制。根據500錯誤返回的調用棧信息,漏洞觸發期間首先執行了`BridgeServlet`:

    解壓`h5-bridge-webapp.war`后在web.xml中找到有關定義,請求由`BridgeServletEx`處理:

    `BridgeServletEx`為典型的OSGI處理,簡要流程為`BridgeServlet->ProxyServlet->DispatcherServlet->OSGI Bundle`:

    回到漏洞觸發鏈接,找到一個名為`h5-vcav-bootstrap-ui`的war包,其plugin.xml定義了bundle的名稱:

    通過MANIFEST.MF文件`Web-ContextPath`得知bundle請求地址為`ui/vcav-bootstrap`,訪問war包下的`homescreen.html`可成功返回內容。

    這里嘗試尋找bundle的加載流程,但日志中與Bundle加載相關的插件為`com.vmware.h4.vsphere.bootstrap.ui`,與xml里id并不匹配。(相關Java Package包的定義位于h5-vacv-bootstrap-service.jar中)。

    在`bundle-context.xml`中找到`ProvidersController`的調用。

    繼續分析war包`web.xml`配置,servlet請求通過`/rest`路由處理,而`ProvidersController`屬于`Servlet`接口。

    `ProvidersController`代碼位于`h5-vacv-bootstrap-service.jar`中,jar包中的`bootstrap-context.xml`對接口同樣進行了定義:

    接口請求的URL為`vcav-providers/[FUNCTION]`:

    根據Servlet代碼構造最終鏈接為`/ui/vcav-bootstrap/rest/vcav-providers/providers-list`,可實現對接口未授權訪問。

    調試跟蹤

    下面是代碼調試截圖,進入`BridgeServletEx`處理:

    執行到`ProxyServlet`:

    最后調用`getProviderLogo`函數:

    利用漏洞既可以實現SSRF攻擊,也可以實現任意文件讀取,比如讀取postgresql數據庫配置:


    至此整個模塊調用機制就分析完畢,漏洞完整原理也一目了然。

    ssrfbundle
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    從VMware vCenter SSRF漏洞調試來看系統模塊調用與認證機制。
    它的云解決方案包括云產品,數據中心產品和桌面產品等。它包括了 vCenter Server, ESXi 和 vSphere client,是整套虛擬化部署方案的總和。是 vSphere 中最重要的一個組件。而 vSphere client 有更加詳細的性能監控,批量更新接管所有 ESXi 系統版本。在 6.0 版本之后,官方已經取消了 C/S 架構的客戶端,轉而采用了 web 管理平臺,又被稱之為 vSphere web client。官方推薦將打包好的 Client 與 Server 應用部署在 VMware 自家的 Photon 系統下,其安裝包命名為:VMware vCenter Server Appliance,簡稱為:VCSA。
    SSRF作為入口點的利用
    2022-12-15 10:55:06
    由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測及文章作者不為此承擔任何責任。雷神眾測擁有對此文章的修改和解釋權。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。SSRF入口的利用SSRF是由一種攻擊者構造請求,由服務器端發起請求的安全漏洞。一般情況下SSRF的攻擊目標是外網無法訪問到的內部系統。
    SSRF漏洞形成的原因主要是服務器端所提供的接口中包含了所要請求的內容的URL參數,并且未對客戶端所傳輸過來的URL參數進行過濾。
    一般情況下利用URL解析導致SSRF過濾被繞過基本上都是因為后端通過不正確的正則表達式對URL進行了解析。該方式主要是利用URL解析器和URL請求器之間的差異性發起攻擊,由于不同的編程語言實現URL解析和請求是不一樣的,所以很難驗證一個URL是否合法。下圖展示了cURL請求函數與其他語言解析函數結合使用時,由于差異性造成的漏洞。
    FastCGI與PHP-FPM FastCGI 快速通用網關接口(Fast Common Gateway Interface/FastCGI)是一種讓交互程序與Web服務器通信的協議。FastCGI是早期通用網關接口(CGI)的增強版本。FastCGI致力于減少網頁服務器與CGI程序之間交互的開銷,從而使[服務器可以同時處理更多的網頁請求。
    利用SSRF滲透內網主機
    2021-12-26 07:39:35
    接下來PHP解析器會解析php.ini文件,初始化執行環境,然后處理請求,再以規定CGI規定的格式返回處理后的結果,退出進程,Web server再把結果返回給瀏覽器。這就是一個完整的動態PHP Web訪問流程。
    SSRF常用的四種協議
    2021-07-19 10:53:05
    最近在項目中遇到了ssrf漏洞,并探測到了目標機器上監聽127.0.0.1的redis。嘗試用ssrf打了一波,雖然最后因權限問題沒能成功利用,但也學會了很多新東西,在這里給大家分享一下。
    一般情況下,SSRF針對的都是一些外網無法訪問的內網,所以需要SSRF使目標后端去訪問內網,進而達到我們攻擊內網的目的。
    在研究在 Docker 容器中執行不受信任的 Python 代碼會出現什么反應的過程中測試了幾個在線代碼執行引擎,以了解它們對各種攻擊的反應。Qualified 被廣泛使用,包括CodeWars 或InterviewCake等網站。能夠運行代碼與網絡訪問,且在 Amazon Web Services 中運行。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类