<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>

    CVE-2022-25237 Bonitasoft Platform 從認證繞過到未公開反序列化漏洞發現之旅

    VSole2022-05-30 07:11:13

    漏洞信息

    Bonitasoft 從 Dockerhub 下載超過 500 萬次,它是一個業務自動化平臺,可以更輕松地在業務流程中構建、部署和管理自動化應用程序。

    CVE-2022-25237 Bonitasoft Platform 存在 Auth AP I認證繞過漏洞,通過精心構造 payload 發送到特殊功能的 API URL,可導致遠程代碼執行。受影響版本如下:

    For community(社區版):

    • 2022.1-u0 (7.14.0) 以下

    For subscription(訂閱版):

    • 2022.1-u0 (7.14.0) 以下
    • 2021.2-u4 (7.13.4) 以下
    • 2021.1-0307 (7.12.11) 以下
    • 7.11.7 以下

    在分析認證繞過漏洞時,還發現了一處潛藏的未公開反序列化漏洞。下面將完整分析過程共享給大家。

    環境準備

    使用 docker 運行對應版本鏡像。查看 Java 進程:

    添加遠程調試配置:

    重啟容器,查看是否開啟 5000 調試端口,開放成功后配置 idea 指定調試端口:

    補丁對比

    對比 `bonita:7.13.0` 和 `bonita:7.14.0` 版本,發現`bonita:7.14.0` 中刪除了 `AbstractAuthorizationFilter` 類,該文件中包含 `Filter` 權限認證繞過邏輯:

    通過補丁對比,在 `web.xml` 中發現還增加了一處認證配置:

    這個配置主要是為 `/serverAPI/` 路由添加 `BASIC` 認證。

    認證繞過漏洞

    補丁分析中講到,最新版的軟件已經將 `AbstractAuthorizationFilter` 刪掉,那么在 `AbstractAuthorizationFilter` 代碼中明確指出了哪些路由不需要 `session`,在漏洞分析的時候主要關注 `isMatched` 賦值為 `true` 的那一行。`requestURL` 為用戶請求的 `URL`, `contains` 只是簡單匹配了路由是否包含 `excludePatterns`:

    其中 `excludePatterns` 在配置文件中賦值:

    上面3個鑒權 `Filter` 中的 `excludePatterns` 變量,必定包含 `i18ntranslation` 。`web.xml` 文件中配置了路由對應的 `Filter` 鏈,因為 `/API/*` 路由對應了 `RestAPIAuthorizationFilter` ,因此可以選擇 `i18ntranslation` 作為權限繞過關鍵字:

    根據上面的分析,我們可以構造多種姿勢的 URL 實現認證繞過:

    文件上傳到 RCE

    雖然有了 `Filter` 認證繞過,但并不意味著能在核心功能代碼中完全實現認證繞過,從目前公開的 POC 來看,主要利用了管理員的權限上傳惡意組件,核心 `servlet` 為 `FileUploadServlet`,其子類對應兩個 `url` :

    通過靜態分析和動態調試, `FileUploadServlet` 在文件處理過程中需要獲取 `session` 中的 `apiSession` 字段:

    然而問題是,如果不登陸, `Session` 中的 `apiSession` 就不會被賦值,獲取該字段會拋異常。因此如果要使用該功能必須要配合用戶登錄的 `session` 才行。雖然訪問 `/API/pageUpload` 需要管理員權限,但是結合 `Filter` 認證繞過,在普通用戶下也可以訪問,所以漏洞的準確描述應該為越權漏洞。這個漏洞的邏輯過程比較簡單,這里就不過多敘述了,下面重點分析新發現的反序列漏洞。

    反序列化漏洞

    進入真正的主題。在分析復現 CVE-2022-25237 的過程中,注意到修復補丁增加了其他一些 `servlet` 的鑒權。根據 `web.xml` 配置信息,可知 `/serverAPI/` 路由對應的是 `HttpAPIServlet` ,關聯的處理類為 `org.bonitasoft.engine.api.internal.servlet.HttpAPIServlet` :

    定位 `doPost` 方法,判斷了 `this.enabled` 變量,該變量在 docker 安裝時默認為 `false`:

    需要在 docker 啟動時添加環境變量,或者在系統啟動時修改環境變量的默認值。檢查完環境變量后,將調用 `callHttpApi` 函數, 接著進入 `HttpAPIServletCall#doPost` 方法:

    函數內部存在很多反序列化操作,主要包括 xstream XML 反序列化和 Java 原生反序列化:

    因為 xstream 版本為 v1.4.18,目前公開的利用鏈無法使用。重點關注存在原生反序列化過程的 `deserialize` 函數:

    按照代碼處理流程構造數據包成功達到反序列化觸發點:

    在項目依賴庫中發現 bonitasoft 使用了 `commons-beanutils-1.9.4.jar`,可以參考公眾號前面提到的不依賴 cc 鏈的 cb 利用鏈新的構造思路,同時結合 Tomcat 命令回顯姿勢,實現反序列化命令執行回顯的效果:

    有興趣深入交流的小伙伴,請加入我們的漏洞空間站-致力于打造優質漏洞資源和小伙伴聚集地!

    由于傳播、利用此文檔提供的信息而造成任何直接或間接的后果及損害,均由使用本人負責,且聽安全團隊及文章作者不為此承擔任何責任。

    漏洞序列化
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    最近兩個月我一直在做拒絕服務漏洞相關的時間,并收獲了Spring和Weblogic的兩個CVE但DoS漏洞終歸是雞肋洞,并沒有太大的意義,比如之前有人說我只會水垃圾洞而已,所以在以后可能打算做其他方向早上和pyn3rd師傅聊天
    淺談Java反序列化漏洞
    2022-05-17 17:48:01
    Java序列化與反序列化Java 提供了一種對象序列化的機制,該機制中,一個對象可以被表示為一個字節序列,該字節序列包括該對象的數據、有關對象的類型的信息和存儲在對象中數據的類型。反序列化就是打開字節流并重構對象。對象序列化不僅要將基本數據類型轉換成字節表示,有時還要恢復數據。
    序列化漏洞匯總
    2022-01-07 22:17:34
    漏洞出現在WLS Security組件,允許遠程攻擊者執行任意命令。攻擊者通過向TCP端口7001發送T3協議流量,其中包含精心構造的序列化Java對象利用此漏洞。然后將其序列化,提交給未做安全檢測的Java應用。Java應用在進行反序列化操作時,則會觸發TransformedMap的變換函數,執行預設的命令。
    序列化的核心思維旨在,將A變成B,最后再從B還原回A。 總之,在一些條件苛刻或者變化無常的環境與需求中,產生了這種靈活的可逆性的B的中間體。 理解不安全反序列化的最好方法是了解不同的編程語言如何實現序列化和反序列化。這里的序列化與反序列化指的是程序語言中自帶的實施與實現。而非自創或者自定義的序列化與反序列化機制(比如:N進制形式hashmap樹型等其他數據結構里的序列化中間體)。
    漏洞影響版本 Jboss 漏洞搭建 在阿里云端,用docker 搭建測試環境jboos使用的漏洞庫是 vulhub ,進入漏洞庫選擇jboos里面有三個選項選擇第一個cve.輸入 docker-compose up -d 啟動 本地測試,在瀏覽器輸入訪問 /invoker/readonly,若顯示HTTP Status 500,則說有反序列化漏洞。使用工具測試驗證漏洞是否存在,工具下載地址: ... 執行whoami命令
    前置知識分析Transformer接口及其實現類。transform()傳入對象,進行反射調用。構造調用鏈調用鏈構造原則:找調用關系要找不同名的方法,如果找到同名,再通過find usages得到的還是一樣的結果。找到InvokerTransformer類中的transform(),右鍵,點 Find Usages,找函數調用關系,最好找不同名的方法,調用了transform()。因為transform()調用transform()不能換到別的方法里,沒有意義。如果有一個類的readObject()調用了get(),那我們就可能找到了調用鏈。最終選擇TransformedMap這個類,因為TransformedMap類中有好幾處都調用了transform()。
    使用 SerializationBinder 無法完全修復反序列化漏洞隱患。經過深入研究總結了兩種不安全 SerializationBinder 限定的繞過方式,下面分享給大家。
    近日Oracle通報了一個反序列化漏洞CVE-2022-21445,未經身份認證的遠程攻擊者可利用該漏洞實現反序列化操作導致任意代碼執行。任何基于ADF Faces框架開發的程序都受到此漏洞的影響,包括Oracle的多個產品。
    Fastjson Develop Team發布安全公告,修復了一個存在于Fastjson1.2.80 及之前版本中的反序列化漏洞漏洞編號:暫無,漏洞威脅等級:高危。
    JDK7u21的核心點是我們在cc1中也出現過的AnnotationInvocationHandler,在cc1中我們用到了他會觸發this.memberValues.get(var4);這個點,而在JDK7u21中利用到了他里面的equalsImpl。先來看一下equalsImpl。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类