WebLogic CVE-2021-2394 RCE 漏洞分析

漏洞簡述

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

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


漏洞分析

最開始我是發現了oracle.eclipselink.coherence.integrated.internal.cache.SerializationHelper類中的readAttributeAccessor方法

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

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

最重要的是FilterExtractor類的extract方法和LockVersionExtractor類的extract方法一樣都調用了getAttributeValueFromObject方法

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

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


看下CVE-2020-14756前部分需要用到的調用鏈

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)

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


總結

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

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

3.FilterExtractor類替換LockVersionExtractor類

4.SerializationHelper.readAttributeAccessor替換MethodAttributeAccessor

5.組成一條完整的調用鏈


緊急通報!!!

網絡安全學習資料白嫖的機會來了?。。?/a>

推薦閱讀更多精彩內容

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