WebLogic CVE-2021-2394 RCE 漏洞分析

admin 2024年12月17日13:38:30评论9 views字数 2365阅读7分53秒阅读模式

漏洞简述

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方法

WebLogic CVE-2021-2394 RCE 漏洞分析

在这个方法中实例化了MethodAttributeAccessor类,在MethodAttributeAccessor类中的getAttributeValueFromObject方法存在反射调用

WebLogic CVE-2021-2394 RCE 漏洞分析

这里就是CVE-2020-14825的触发点,在14825中就是LockVersionExtractor和MethodAttributeAccessor的调用链来进行RCE的,这两个类都已经加入到黑名单列表中。而SerializationHelper类的readAttributeAccessor方法被FilterExtractor的readExternal方法调用了

WebLogic CVE-2021-2394 RCE 漏洞分析

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

WebLogic CVE-2021-2394 RCE 漏洞分析

那这里就产生绕过了,虽然LockVersionExtractor和MethodAttributeAccessor类都在黑名单列表里面,但是FilterExtractor类可以替代LockVersionExtractor类,并且在FilterExtractor类的readExternal方法调用了SerializationHelper.readAttributeAccessor,SerializationHelper.readAttributeAccessor方法中又实例化了MethodAttributeAccessor类。

但是这里还不能直接触发,FilterExtractor类的readExternal方法为DataInput类型不是ObjectInput,这里就要利用CVE-2020-14756前部分的调用链,简单来说14756是一个二次反序列化的调用链,WebLogic自身实现了一套readObject反序列化过程,自定义的这一套需要实现ExternalizableLite接口,它的readExternal参数是DataInput类型。

WebLogic CVE-2021-2394 RCE 漏洞分析

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

时间线

  • 2021年3月15日V-Lab实验室向Oracle官方报告了此漏洞

  • 2021年3月17日Oracle分配了issue编号

  • 2021年4月24日Oracle确认在下一个补丁日修复此漏洞

  • 2021年7月17日Oracle分配CVE编号CVE-2021-2394

  • 2021年7月21日Oracle发布致谢信息

修复建议

及时更新补丁,参考oracle官网发布的补丁:

https://www.oracle.com/security-alerts/cpujul2021.html

原文始发于微信公众号(VLab Team):WebLogic CVE-2021-2394 RCE 漏洞分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月17日13:38:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WebLogic CVE-2021-2394 RCE 漏洞分析https://cn-sec.com/archives/1132766.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息