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.组成一条完整的调用链


紧急通报!!!

网络安全学习资料白嫖的机会来了!!!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 漏洞概要 Oracle官方发布了4月份的关键补丁更新CPU(Critical Patch Update),其中包含...
    编程小世界阅读 1,068评论 0 0
  • 1. 实例:ImageMagick远程命令执行漏洞在Polyvore的利用 ImageMagick是一个被广泛用于...
    gambr0阅读 8,555评论 0 1
  • 没有过多涉及原理和分析,只是作为记录,免得一问三不知。 T3协议 什么是RMI:远程方法调用(Remote Met...
    jjf012阅读 7,139评论 1 5
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 128,734评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,951评论 0 4

友情链接更多精彩内容