欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

WebLogic CVE-2021-2394 RCE 漏洞分析

发布时间:2025/3/21 编程问答 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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, SortedBagWrapperComparator(com.tangosol.util)compare:1295,TreeMap(java.util)put:538,TreeMap(java.util)add:152,SortedBag(com.tangosol.util)add:268,TopNAggregatorWrapperComparator (com.tangosol.util) compare:1295, TreeMap (java.util) put:538, TreeMap (java.util) add:152, SortedBag (com.tangosol.util) add:268, TopNAggregatorWrapperComparator(com.tangosol.util)compare:1295,TreeMap(java.util)put:538,TreeMap(java.util)add:152,SortedBag(com.tangosol.util)add:268,TopNAggregatorPartialResult (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.组成一条完整的调用链

紧急通报!!!

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

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的WebLogic CVE-2021-2394 RCE 漏洞分析的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。