cve-2020-2555Oracle Coherence&WebLogic反序列化远程代码执行漏洞分析
0x00:漏洞简介:该洞主要针对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
0x01:漏洞分析:主要问题出现在LimitFilter类导致反序列化的安全问题。这个漏洞存在于一个Java方法中,攻击者将能够通过受控参数来调用该方法。
漏洞的gadget如下:
那么我将进行简单的分析:
反序列化入口(source):BadAttributeValueExpException.readObject()函数,这个在看大佬poc和ysoserial工具源码发现大多数poc也是以BadAttributeValueExpException触发的。
接下来在coherence.jar包的coherence/lib/coherence.jar/com/tangosol/util/filter/LimitFilter分析LimitFilter的代码发现在toString方法内部调用了ValueExtractor的extract 方法() 且m_oAnchorBottom是可控的。
之后发现Oracle Coherence库中提供了这样一个类,即ChainedExtractor,而这个类允许我们串联针对extract()方法的调用:coherence.jar包的coherence/lib/coherence.jar/com/tangosol/util/extractor/ChainedExtractor.class中如图。
而我们知道一般在挖掘发序列化的过程中除了要找到反序列化入口(source),还要触发漏洞的目标方法(sink)。
Method.invoke,这种需要适当地选择方法和参数,通过反射执行Java方法将runtime对象赋值给m_oAnchorTop,触发limitfilter中toString方法中的extractor函数从而执行命令。
0x03:漏洞复现
环境搭建:
实验环境:
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也没有用)
3.安装方式: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,就可以执行安装。
4.启动Weblogic安装界面。
5.安装完成就可以登录了
漏洞攻击复现:
POC:https://github.com/Y4er/CVE-2020-2555
1.首先下载下来之后通过IDEA打开CVE-2020-2555\src\com\supeream\CVE_2020_2555.java
2.运行idea生成.ser文件(项目自带的文件为攻击系统为linux时用的所以要重新编译)
3.之后运行py -2 weblogic_t3.py 服务器ip7001test1.ser弹出计算器 攻击执行成功。
谢谢分享谢谢分享
页:
[1]