JDBC 攻擊之反序列化操作導致 Weblogic SSRF
VSole2022-06-19 11:00:02
概述
最近在網上看到有大佬公布了一個有意思的 Weblogic SSRF ,本質上其實是 Oracle JDBC Driver 中的類在反序列化操作時會自動發送 JDBC 連接,結合 Weblogic T3 反序列化操作就可以實現 SSRF。
原理分析
在 Oracle JDBC Driver 中存在一個 `oracle.jdbc.pool.OraclePooledConnection` 類,繼承于 `Serializable` :

定位 `readObject` 函數:

通過反序列化數據流提取 `connectionProperty` 參數( `HashTable` 類型),然后調用 `OracleDriver#connect` 函數,從函數名稱來看,猜測該函數用于完成數據庫連接,跟進:

對 `connection_url` 格式進行匹配之后,當構造格式符合一定條件,將生成 `OracleDriverExtension` 對象 `var11` :

繼續往下走,將調用 `OracleDriverExtension#getConnection` 函數,比如我們可以控制將 `OracleDriverExtension` 指定為子類 `T4CDriverExtension` 對象:

發送 JDBC 連接請求,那么如果我們根據上面的處理邏輯,構造特定的連接地址和端口,通過 Weblogic T3 協議進行發送,將會觸發 Weblogic JDBC 連接的 SSRF 攻擊。
SSRF復現
生成特定 `OraclePooledConnection` 序列化載荷,然后利用 T3 協議發包程序發送:



完成 JDBC 連接嘗試,觸發 SSRF :

VSole
網絡安全專家