Apache OfBiz 反序列化命令执行漏洞(CVE-2023-49070)

news/2025/2/6 2:59:12/

项目介绍

Apache OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具。包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。

项目地址

  • https://ofbiz.apache.org/

漏洞概述

在Apache OFBiz 17.12.03版本及以前存在一处XMLRPC导致的反序列漏洞,官方于后续的版本中对相关接口进行加固修复漏洞,但修复方法存在绕过问题(CVE-2023-49070),攻击者仍然可以利用反序列化漏洞在目标服务器中执行任意命令。

影响的版本

Apache OFBiz < 18.12.10

环境搭建

下载完成vulhub后,进入CVE-2023-49070目录,直接执行docker compose up -d 命令即可。

漏洞复现

1、使用CommonsBeanutils1链构造恶意paylod

java -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/success" | base64 | tr -d "\n"

2、使用如下poc

3、命令成功执行

漏洞分析

此次漏洞产生的根源是xmlrpc组件的反序列化漏洞,但是由于xmlrpc已经不在更新维护,因此Apache OFBiz项目组决定删除相关代码,已彻底修复该问题,也删除了之前的补丁代码。

实际上CVE-2023-49070是历史漏洞CVE-2020-9496的绕过,CVE-2020-9496的修复补丁如下,仅是在Filter中对存在漏洞的uri和内容进行校验。

但是该补丁可以被绕过,原因是OFBiz采用了tomcat中间件,而tomcat支持/control/xmlrpc;/格式的uri,因此if条件不成立,成功绕过。

但是绕过补丁后,仍然需要登录才可以利用,这里又涉及到了一个认证绕过漏洞。认证代码如下,当下来代码返回结果不为success时,将返回登录页面

在checklogin函数中,存在如下逻辑,只要不满足任何下列条件,将返回success

由于username、password可以被用户控制,在login函数中又存在如下逻辑

因此构造/xxxx/?USERNAME=&PASSWORD=&requirePasswordChange=Y格式的url让认证函数返回success,即可绕过认证。结合上述分析,即可实现preauth-rce。

参考链接

  • https://github.com/vulhub/vulhub/blob/master/ofbiz/CVE-2023-49070/README.zh-cn.md
  • https://issues.apache.org/jira/browse/OFBIZ-12812
  • https://github.com/apache/ofbiz-framework/commit/abe2e4399e

http://www.ppmy.cn/news/1272486.html

相关文章

elasticsearch查询出现Limit of total fields 1000 has been exceeded

项目场景&#xff1a; 在项目中使用elasticsearch保存日志等相关数据&#xff0c;查询页面查询这些日志数据 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 今天在检查日志数据时&#xff0c;发现数据出不来&#xff0c;检查后端日志&#xff0c;发现一直…

简历提示:如何撰写出色的简历

您的简历可能是您一生中写的最重要的一页。遵循我们的 20 条简历写作技巧&#xff0c;让您的简历取得成功。 您知道一份出色的简历的重要性。这是您获得一份好工作所需的文件&#xff0c;而一份好工作可以带来美好的生活。因此&#xff0c;我们整理了 20 个简历技巧来帮助您撰…

从memcpy()函数中学习函数的设计思想

memcpy()函数&#xff1a;可以理解为内存拷贝。 他的函数定义如下的 my_memcpy()函数相同。 下面这个函数是我的模拟实现&#xff0c;现在让我们一起来学习一下这个函数的设计思想&#xff1a; void * my_memcpy(void * des, const void* src, size_t size) {void * p des;…

linux 块设备驱动程序介绍

Linux块设备驱动是Linux操作系统中用于处理块设备的设备驱动程序。块设备是指以固定大小的块单位进行访问的存储设备&#xff0c;例如硬盘、固态硬盘和USB存储设备等。 Linux块设备驱动负责管理块设备的读写操作&#xff0c;并将数据传输到相应的存储设备上。它还负责处理块设…

【知识分享】Java实现排序的方法及代码实现

Java实现排序的基础方法有很多&#xff0c;下面介绍几种比较常见的排序算法及其代码实现。 1.冒泡排序 冒泡排序是一种基础的排序算法&#xff0c;其思想是依次比较相邻的两个元素&#xff0c;如果顺序不对则交换它们的位置&#xff0c;直到整个数组都排好序为止。 代码实现…

什么是sql的谓词下推

SQL的谓词下推&#xff08;Predicate Pushdown&#xff09;是一种数据库查询优化技术&#xff0c;它将查询中的过滤条件&#xff08;谓词&#xff09;尽可能地“下推”到查询计划中更早的阶段执行。这意味着&#xff0c;系统尝试在处理和转换数据之前先应用这些过滤条件&#x…

70.爬楼梯

题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a; 给定 n 是一个正整数。 示例 1: 输入&#xff1a; 2 输出&#xff1a; 2 解释&#xff1a; 有两种方法可以爬到楼顶…

nlp与cv的发展

Transformer的出现,促进了更高容量模型的建立,为大模型的出现奠定基础. &#x1f9d0;大模型通常具有十亿个以上参数(仅供参考) &#x1f62e;左边的蓝色是CV领域、右下绿色是NLP、右上蓝色是多模态&#x1f603;基础模型(Foundational Models)首次由Bommasani等人在《Stanford…