cve-2020-2555Oracle Coherence&WebLogic反序列化远程代码执行漏洞分析
字数 1721 2025-08-20 18:18:05
Oracle Coherence & WebLogic 反序列化远程代码执行漏洞分析 (CVE-2020-2555)
漏洞简介
CVE-2020-2555是Oracle WebLogic Server中Coherence组件的一个反序列化远程代码执行漏洞。该漏洞主要针对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类导致的反序列化安全问题。攻击者可以通过受控参数调用特定方法实现远程代码执行。
漏洞利用链(Gadget Chain)
-
反序列化入口(Source)
BadAttributeValueExpException.readObject()函数- 这是许多反序列化漏洞的常见入口点
-
关键类分析
LimitFilter类位于coherence.jar包的com/tangosol/util/filter/LimitFilter- 其
toString()方法内部调用了ValueExtractor的extract()方法 m_oAnchorBottom属性是可控的
-
利用链构造
ChainedExtractor类(位于com/tangosol/util/extractor/ChainedExtractor)允许串联多个extract()方法调用- 通过反射执行Java方法将runtime对象赋值给
m_oAnchorTop - 触发
LimitFilter中toString()方法中的extractor函数从而执行命令
-
目标方法(Sink)
Method.invoke()方法- 通过反射执行任意Java方法
环境搭建
实验环境要求
- WebLogic: 12.2.1.4.0
- JDK: 1.8.0_261
安装步骤
- 安装Java环境(推荐JDK8)
- 下载WebLogic安装包(如
fmw_12.2.1.4.0_wls.jar) - 执行安装命令:
java -jar fmw_12.2.1.4.0_wls.jar - 按照安装向导完成安装
- 安装完成后启动WebLogic服务
漏洞复现
准备工作
- 获取POC代码(如GitHub上的CVE-2020-2555项目)
- 使用IDEA打开POC项目
- 编译生成
.ser反序列化payload文件
攻击步骤
- 使用Python脚本发送payload:
python weblogic_t3.py <目标IP> 7001 test1.ser - 成功执行将弹出计算器(Windows)或执行其他系统命令
技术细节
关键类分析
LimitFilter类
public class LimitFilter implements Filter, IndexAwareFilter, EntryAwareFilter {
// ...
public String toString() {
// ...
ValueExtractor extractor = this.m_comparator.getValueExtractor();
Object value = extractor.extract(this.m_oAnchorTop);
// ...
}
}
ChainedExtractor类
public class ChainedExtractor implements ValueExtractor, PortableObject {
// ...
public Object extract(Object oTarget) {
Object oValue = oTarget;
for(int i = 0; i < this.m_aExtractor.length; ++i) {
oValue = this.m_aExtractor[i].extract(oValue);
}
return oValue;
}
}
利用链构造原理
- 构造一个
BadAttributeValueExpException对象 - 设置其
val属性为精心构造的LimitFilter对象 LimitFilter对象包含恶意的ChainedExtractor链- 反序列化时触发
toString()方法调用 - 通过
ChainedExtractor链最终执行任意方法
防御措施
-
官方补丁
- 应用Oracle官方发布的安全补丁
- 升级到不受影响的WebLogic版本
-
临时缓解措施
- 禁用T3协议或限制T3协议的访问
- 使用网络防火墙限制对WebLogic端口的访问
-
安全配置
- 启用WebLogic的安全配置
- 限制反序列化操作
总结
CVE-2020-2555是一个典型的Java反序列化漏洞,利用WebLogic中Coherence组件的LimitFilter和ChainedExtractor类构造利用链,通过T3协议实现远程代码执行。该漏洞影响多个WebLogic版本,危害性较高。理解该漏洞的原理有助于防御类似的反序列化安全问题。