Oracle Coherence&WebLogic反序列化远程代码执行漏洞(CVE-2020-2555)复现
2020-09-27 18:14:57 Author: www.secpulse.com(查看原文) 阅读量:234 收藏

漏洞简介:

该洞主要针对weblogic的coherence.jar中存在能够实现反序列化gadget构造的类,并且经过T3协议接收的数据经过反序列化处理后将导致漏洞的产生。

漏洞影响:

Oracle weblogic 12.1.3.0.0

Oracle weblogic 12.2.1.1.0

Oracle weblogic 12.2.1.2.0

Oracle weblogic 12.2.1.3.0

Oracle weblogic 12.2.1.4.0

二、漏洞分析:主要问题出现在LimitFilter类导致反序列化的安全问题。这个漏洞存在于一个Java方法中,攻击者将能够通过受控参数来调用该方法。

漏洞的gadget如下:

13.png

反序列化入口(source):BadAttributeValueExpException.readObject()函数,这个在看大佬poc和ysoserial工具源码发现大多数poc也是以BadAttributeValueExpException触发的。

1.png

接下来在coherence.jar包的coherence/lib/coherence.jar/com/tangosol/util/filter/LimitFilter分析LimitFilter的代码发现在toString方法内部调用了ValueExtractor的extract 方法() 且m_oAnchorBottom是可控的。

2.png

而我们知道一般在挖掘发序列化的过程中除了要找到反序列化入口(source),还要触发漏洞的目标方法(sink)。

Method.invoke,这种需要适当地选择方法和参数,通过反射执行Java方法将runtime对象赋值给m_oAnchorTop,触发limitfilter中toString方法中的extractor函数从而执行命令。

5.png

三、漏洞复现

环境搭建:

实验环境:

weblogic :12.2.1.4.0

JDK 1.8.0_261

weblogic环境搭建:

1.首先需要java环境这里我安装的是JDK8

2.这里我下载的是weblogic12.1.4.0 https://www.oracle.com/middleware/technologies/weblogic-server-installers-downloads.html(ps:本来先下载的12.1.3.0.0但怎么都无法执行命令,试了换很多版本jdk也没有用

安装方式:java -jar fmw_12.1.4.0.0_wls.jar,就可以执行安装。

下载下来是个fmw_12.2.1.4.0_wls_lite_Disk1_1of1,解压后安装方式:java -jar fmw_12.1.4.0.0_wls.jar,就可以执行安装。

启动Weblogic安装界面。

6.png

3.一直默认就可以了,注意要记住自己设置的密码

7.png

5.安装完成就可以登录了

8.png

漏洞攻击复现:

POC:https://github.com/Y4er/CVE-2020-2555

1.首先下载下来之后通过IDEA打开CVE-2020-2555\src\com\supeream\CVE_2020_2555.java

9.png

10.png

2.运行idea生成.ser文件(项目自带的文件为攻击系统为linux时用的所以要重新编译)

11.png

3.之后运行py -2 weblogic_t3.py 服务器ip  7001  test1.ser  弹出计算器 攻击执行成功。

12.png

本文作者:hatjwe

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/141869.html


文章来源: https://www.secpulse.com/archives/141869.html
如有侵权请联系:admin#unsafe.sh