WebLogic EJBTaglibDescriptor XXE漏洞(CVE-2019-2888)分析

2019-11-22 79354人圍觀 ,發現 2 個不明物體 漏洞

這個漏洞和之前@Matthias Kaiser提交的幾個XXE漏洞是類似的,而EJBTaglibDescriptor應該是漏掉的一個,可以參考之前幾個XXE的分析。我和@Badcode師傅反編譯了WebLogic所有的Jar包,根據之前幾個XXE漏洞的特征進行了搜索匹配到了這個EJBTaglibDescriptor類,這個類在反序列化時也會進行XML解析。

Oracle發布了10月份的補丁,詳情見鏈接(https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html)

環境

Windows 10

WebLogic 10.3.6.0.190716(安裝了19年7月補丁)

Jdk160_29(WebLogic 自帶的JDK)

漏洞分析

weblogic.jar!\weblogic\servlet\ejb2jsp\dd\EJBTaglibDescriptor.class這個類繼承自java\io\Externalizable

因此在序列化與反序列化時會自動調用子類重寫的writeExternal與readExternal

看下writeExternal的邏輯與readExternal的邏輯,

在readExternal中,使用ObjectIutput.readUTF讀取反序列化數據中的String數據,然后調用了load方法,

在load方法中,使用DocumentBuilder.parse解析了反序列化中傳遞的XML數據,因此這里是可能存在XXE漏洞的

在writeExternal中,調用了本身的toString方法,在其中又調用了自身的toXML方法

toXML的作用應該是將this.beans轉換為對應的xml數據。看起來要構造payload稍微有點麻煩,但是序列化操作是攻擊者可控制的,所以我們可以直接修改writeExternal的邏輯來生成惡意的序列化數據:

漏洞復現

重寫EJBTaglibDescriptor中的writeExternal函數,生成payload

發送payload到服務器

在我們的HTTP服務器和FTP服務器接收到了my.dtd的請求與win.ini的數據

在打了7月份最新補丁的服務器上能看到報錯信息

參考鏈接:

[1]分析:https://paper.seebug.org/906/

[2]https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html

*本文作者:[email protected]知道創宇404實驗室,轉載請注明來自FreeBuf.COM

相關推薦
發表評論

已有 2 條評論

取消
Loading...

特別推薦

推薦關注

官方公眾號

聚焦企業安全

活動預告

填寫個人信息

姓名
電話
郵箱
公司
行業
職位
css.php 什么app能玩二人麻将