写点什么

WebLogic CVE-2021-2394 RCE 漏洞分析

用户头像
H
关注
发布于: 1 小时前


漏洞简述

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中就是LockVersionExtractorMethodAttributeAccessor的调用链来进行 RCE 的,这两个类都已经加入到黑名单列表中。而SerializationHelper类的readAttributeAccessor方法被FilterExtractorreadExternal方法调用了



最重要的是FilterExtractor类的extract方法和LockVersionExtractor类的extract方法一样都调用了getAttributeValueFromObject方法



那这里就产生绕过了,虽然LockVersionExtractorMethodAttributeAccessor类都在黑名单列表里面,但是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.组成一条完整的调用链

 

紧急通报!!!

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



用户头像

H

关注

还未添加个人签名 2021.07.04 加入

想白嫖网安学习资料的,扣我

评论

发布
暂无评论
WebLogic CVE-2021-2394 RCE 漏洞分析