介绍
CVE-2024-25065 是一个存在于 Apache OFBiz 在版本 18.12.12 之前的漏洞。这是一种路径遍历漏洞,允许通过 hasBasePermission()方法中的 contextPath 变量进行身份验证绕过。
Apache OFBiz 是什么?
Apache OFBiz(Open For Business)是一个开源的企业资源规划(ERP)和电子商务系统,提供了一套全面的商业应用程序,用于自动化和整合各种业务流程。OFBiz 使用 Java 和 XML 构建,可高度定制和可扩展,适用于中小型企业和具有复杂流程的企业。其模块化设计包括会计、库存管理、制造、订单管理和采购等 ERP 模块,以及电子商务、客户关系管理(CRM)和人力资源功能。OFBiz 支持强大的数据模型和面向服务的体系结构(SOA),实现业务逻辑和流程的无缝管理。作为 Apache 软件基金会的项目,OFBiz 受益于众多开发人员和广泛的文档,确保持续的支持和合作。带有 Apache Tomcat、Apache Derby、Freemarker 和 Groovy 等关键技术,OFBiz 为希望简化运营而不需要昂贵许可费的企业提供了一个集成解决方案。
对比修复补丁
LoginWorker.java
修补了此漏洞的提交位于:framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java:
在这里添加了如下代码:
图 1:补丁添加的代码
这段代码的目的是确保 contextPath 变量是一个有效的、标准化的 URI 字符串。标准化 URI 包括移除冗余的段落(例如 . 和 …)、解析相对路径以及将 URI 转换为标准格式的过程。
显然,正如 CVE 描述中所述,contextPath 中存在路径遍历漏洞。
准备测试环境
由于 18.12.12 版本之前的版本存在漏洞,因此较旧的版本在编译构建过程中可能会遇到问题。相比之下,18.12.05 版本的问题较少,你可以在此下载该版本。
首先,我们需要 OpenJDK-8:
下载 openJDK8
wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
解压
tar -xvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
将其移动到JVM文件夹
sudo mv java-se-8u41-ri /usr/lib/jvm/openjdk-8
将其添加到PATH中
export JAVA_HOME=/usr/lib/jvm/openjdk-8
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVA