CVE-2022-21445 Oracle JDeveloper ADF Faces反序列化漏洞影響眾多Oracle產品
漏洞信息
Oracle JDeveloper 是一個免費的非開源的集成開發環境,通過支持完整的開發生命周期簡化了基于 Java 的 SOA 應用程序和用戶界面的開發。
近日監測到 Oracle JDeveloper ADF Faces 通報了一個反序列化漏洞 CVE-2022-21445 ,未經身份認證的遠程攻擊者可利用該漏洞實現不可信數據的反序列化,可在受影響的服務器中執行任意代碼。從通報信息來看,任何基于 ADF Faces 框架開發的程序都受到此漏洞的影響,包括 Oracle 自身的多個產品:
- Oracle Business Intelligence
- Oracle Enterprise Manager
- Oracle Identity Management
- Oracle SOA Suite
- Oracle WebCenter Portal
- Oracle Application Testing Suite
- Oracle Transportation Management
- Oracle Access Manager
影響版本如下:
- Oracle JDeveloper == 12.2.1.3.0
- Oracle JDeveloper == 12.2.1.4.0
反序列化漏洞分析
首先從官網下載 Oracle JDeveloper 進行安裝:

CVE-2022-21445 漏洞觸發點位于 Oracle JDeveloper ADF Faces 的基礎類 `org.apache.myfaces.trinidad.webapp.ResourceServlet` :

`ResourceServlet` 繼承于 `HttpServlet` ,對應一個 Servlet HTTP 請求,比如在 Oracle JDeveloper 安裝后默認例子的 `web.xml` 就存在相關的定義:


定位 `ResourceServlet#doGet` 函數:

根據 HTTP 請求對象 `request` 獲取 `ResourceLoader` 對象,接著調用其 `getResource` 函數獲取 `URL` 對象,然后調用 `URL#openConnection` 函數。我們跟進 `getResource` 函數:


函數 `findResource` 直接返回 `null` ,但是可以找到 `20` 個 `ResourceLoader` 類的子類重寫覆蓋了 `findResource` 函數:

注意到其中的一個子類 `RemoteApplicationResourceLoader` :

進入 `RemoteApplicationResourceLoader.RAStreamHandler` 類定義:

注意其 `openConnection` 函數里面調用了 `RemoteApplicationResourceLoader#RAURLConnection` 函數,進入:





參數是一路傳遞過去的,直接到達反序列化的觸發點,存在反序列化漏洞的風險。
下面我們需要做的事情是如何確定訪問 URL ,讓請求進入 `RemoteApplicationResourceLoader` 進行處理。通過分析 `ResourceLoader` 的其他子類,發現在 `oracle.adfinternal.view.resource.rich.RenderKitResourceLoader` 類的構造函數中注冊了大量 URL 規則,其中就包括 `RemoteApplicationResourceLoader` :

因此我們可以嘗試構造 `/afr/test1/remote/test2/` 的 URL 格式使得請求進入 `RemoteApplicationResourceLoader` ,從而觸發反序列化操作。
利用 Oracle BI 實現漏洞復現
前面都是利用 Oracle JDeveloper 對代碼進行靜態審計,因為眾多 Oracle 官方產品都使用的 Oracle JDeveloper 庫,所以漏洞影響面較大,比如前面我們分析過的 Oracle Access Manager :
CVE-2021–35587 Oracle Access Manager 反序列化漏洞
QCyber,公眾號:【最新漏洞預警】CVE-2021–35587 Oracle Access Manager反序列化漏洞分析與命令回顯構造
`7001` 端口就存在 CVE-2022-21445 反序列化漏洞,下面通過一個以前沒有研究過的產品 Oracle Business Intelligence 來復現該漏洞。Oracle Business Intelligence 安裝過程比較復雜,經過多次失敗嘗試后終于安裝成功,為了避免小伙伴們踩坑,漏洞空間站介紹了詳細的安裝過程,有興趣的小伙伴可以加入進行交流。
安裝并配置完畢:

最終對外服務:
WebLogic Console : http://***:9500/consoleWebLogic Enterprise Manager: http://***:9500/emBI publisher: http://***:9502/xmlpserverBI Analytics: http://***:9502/analytics
完成環境搭建并啟動后,首先搜索下觸發漏洞的關鍵類 `org.apache.myfaces.trinidad.webapp.ResourceServlet` 被調用的情況:

存在多處調用。我們可以參考 Oracle Access Manager CVE-2021–35587 反序列化漏洞利用的構造方式,繼續使用 CVE-2020–14644 利用鏈。因為 Oracle Business Intelligence 也是運行在 Weblogic 之上,所以我們可以利用 Weblogic 框架自帶的 `Request` 和 `Response` 對象實現命令回顯。
`9500` 端口對應的 `Enterprise Manager` 實現命令執行回顯:

`9502` 端口對應的 BI Composer 實現命令執行回顯:
