WebLogic CVE-2021-2394 RCE 漏洞分析

漏洞簡述

2021年3月15日墨云安全V-Lab實驗室向Oracle官方報告了Weblogic Server RCE漏洞,2021年7月21日Oracle發(fā)布了致謝信息。

這是一個二次反序列化漏洞,是cve-2020-14756和cve-2020-14825的調(diào)用鏈相結(jié)合組成一條新的調(diào)用鏈來繞過weblogic黑名單列表。


漏洞分析

最開始我是發(fā)現(xiàn)了oracle.eclipselink.coherence.integrated.internal.cache.SerializationHelper類中的readAttributeAccessor方法

在這個方法中實例化了MethodAttributeAccessor類,在MethodAttributeAccessor類中的getAttributeValueFromObject方法存在反射調(diào)用

這里就是CVE-2020-14825的觸發(fā)點,在14825中就是LockVersionExtractor和MethodAttributeAccessor的調(diào)用鏈來進行RCE的,這兩個類都已經(jīng)加入到黑名單列表中。而SerializationHelper類的readAttributeAccessor方法被FilterExtractor的readExternal方法調(diào)用了

最重要的是FilterExtractor類的extract方法和LockVersionExtractor類的extract方法一樣都調(diào)用了getAttributeValueFromObject方法

那這里就產(chǎn)生繞過了,雖然LockVersionExtractor和MethodAttributeAccessor類都在黑名單列表里面,但是FilterExtractor類可以替代LockVersionExtractor類,并且在FilterExtractor類的readExternal方法調(diào)用了SerializationHelper.readAttributeAccessor,SerializationHelper.readAttributeAccessor方法中又實例化了MethodAttributeAccessor類。

但是這里還不能直接觸發(fā),FilterExtractor類的readExternal方法為DataInput類型不是ObjectInput,這里就要利用CVE-2020-14756前部分的調(diào)用鏈,簡單來說14756是一個二次反序列化的調(diào)用鏈,WebLogic自身實現(xiàn)了一套readObject反序列化過程,自定義的這一套需要實現(xiàn)ExternalizableLite接口,它的readExternal參數(shù)是DataInput類型。


看下CVE-2020-14756前部分需要用到的調(diào)用鏈

compare:416, SortedBag$WrapperComparator (com.tangosol.util)compare:1295, TreeMap (java.util)put:538, TreeMap (java.util)add:152, SortedBag (com.tangosol.util)add:268, TopNAggregator$PartialResult (com.tangosol.util.aggregator)readExternal:297, TopNAggregator$PartialResult (com.tangosol.util.aggregator)readExternalizableLite:2265, ExternalizableHelper (com.tangosol.util)readObjectInternal:2579, ExternalizableHelper (com.tangosol.util)readObject:2524, ExternalizableHelper (com.tangosol.util)readObject:2502, ExternalizableHelper (com.tangosol.util)readExternal:406, AttributeHolder (com.tangosol.coherence.servlet)readExternal:371, AttributeHolder (com.tangosol.coherence.servlet)

可以看到這里調(diào)用到compare方法了,而cve-2020-14825中剩下的部分就是compare->extract->getAttributeValueFromObject來進行RCE的。


總結(jié)

1.這是一個二次反序列化漏洞

2.整條鏈是cve-2020-14756和cve-2020-14825的結(jié)合體

3.FilterExtractor類替換LockVersionExtractor類

4.SerializationHelper.readAttributeAccessor替換MethodAttributeAccessor

5.組成一條完整的調(diào)用鏈


緊急通報!??!

網(wǎng)絡(luò)安全學(xué)習資料白嫖的機會來了?。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 漏洞概要 Oracle官方發(fā)布了4月份的關(guān)鍵補丁更新CPU(Critical Patch Update),其中包含...
    編程小世界閱讀 1,071評論 0 0
  • 1. 實例:ImageMagick遠程命令執(zhí)行漏洞在Polyvore的利用 ImageMagick是一個被廣泛用于...
    gambr0閱讀 8,578評論 0 1
  • 沒有過多涉及原理和分析,只是作為記錄,免得一問三不知。 T3協(xié)議 什么是RMI:遠程方法調(diào)用(Remote Met...
    jjf012閱讀 7,170評論 1 5
  • 表情是什么,我認為表情就是表現(xiàn)出來的情緒。表情可以傳達很多信息。高興了當然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,502評論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 7,645評論 0 4

友情鏈接更多精彩內(nèi)容