Apache OFBiz groovy 远程代码执行漏洞(CVE-2023-51467)

项目介绍

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

项目地址

https://ofbiz.apache.org/

漏洞概述

Apache OFBiz 在后台提供了执行groovy 代码的功能,但是由于存在认证绕过问题,攻击者可构造恶意请求绕过身份认证,利用后台相关接口功能执行groovy代码,执行任意命令,控制服务器。

影响版本

Apache OFBiz <= 18.12.10

环境搭建

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

漏洞复现


漏洞分析

OFBiz 在后台提供了执行groovy 代码的功能,官方并不认为是漏洞,通过补丁可以发现,仅修复了认证绕过漏洞。

认证绕过漏洞

下面简单分析下认证绕过漏洞逻辑,OFBiz认证逻辑的核心代码如下,代码返回结果不为success时,将返回登录页面

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

由于username、password可以被用户控制,当构造/xxxx/?USERNAME=&PASSWORD=&requirePasswordChange=Y时,username=””、PASSWORD=””,均不等于null,只需要login返回结果不为error即可绕过

在login函数中又存在如下逻辑,当unpwErrMsgList不为空时,即可返回requirePasswordChange

分析UtilValidate.isEmpty函数如下,认证绕过条件满足

groovy 代码执行

在ofbiz的后台,可以通过groovy进行编程导入导出

抓包根据关键字定位,可以找到后台对应代码,分析代码发现存在过滤

过滤代码如下,过滤代码可以轻松绕过

参考链接

https://lists.apache.org/thread/9tmf9qyyhgh6m052rhz7lg9vxn390bdv

https://avd.aliyun.com/detail?id=AVD-2023-51467

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305578.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(04730)半导体器件之基本放大器工作原理(三)

本文主要阐述多级与差动放大器 为使输入的微弱信号进行放大后能获得足够的输出功率去推动负载运行&#xff0c;往往要采用所谓的多级放大电路&#xff0c;信号逐级通过放大&#xff0c;直至得到输出信号。这就必须考虑放大电路级与级之间的信号传递方法&#xff0c;或者称为耦…

数据库进阶教学——主从复制(Ubuntu22.04主+Win10从)

目录 一、概述 二、原理 三、搭建 1、备份数据 2、主库配置Ubuntu22.04 2.1、设置阿里云服务器安全组 2.2、修改配置文件 /etc/my.cnf 2.3、重启MySQL服务 2.4、登录mysql&#xff0c;创建远程连接的账号&#xff0c;并授予主从复制权限 2.5、通过指令&#xff0c;查…

Vue - Class和Style绑定详解

1. 模板部分 <template><div><!-- Class 绑定示例 --><div :class"{ active: isActive, text-danger: hasError }">Hello, Vue!</div><!-- Class 绑定数组示例 --><div :class"[activeClass, errorClass]">Cla…

MySQL查找配置文件的3种方法(Windows)

方法一&#xff1a; 查找根目录 SELECT basedir; 方法二&#xff1a; 查找数据目录 SELECT datadir; 方法三&#xff1a; 文件属性查询“defaults-file”

51单片机(STC8)-- GPIO输入输出

文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器&#xff08;PxM0&#xff0c;PxM1&#xff09;端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制&#xff08;I/O输出&#xff09;按键检测&#xff08;I/O输入&#xff09; S…

Qt(二):使用udp发送与接收图片

使用Qt来通过UDP协议发送和接收图片可以分为几个步骤。以下是一个基本的指南&#xff1a; 发送图片准备图片数据&#xff1a;首先&#xff0c;你需要将图片转换为可以在网络上传输的数据格式。通常&#xff0c;这涉及到将图片转换为字节数组。设置UDP套接字&#xff1a;在Qt中…

拓扑排序图解-Kahn算法和深度优先搜索

拓扑排序 是将一个有向无环图中的每个节点按照依赖关系进行排序。比如图 G G G存在边 < u , v > <u,v> <u,v> 代表 v v v的依赖 u u u, 那么在拓扑排序中&#xff0c;节点 u u u一定在 v v v的前面。 从另一个角度看&#xff0c;拓扑排序是一种图遍历&#…

【计算机毕业设计】SSM医疗药品采购系统

项目介绍 ssm医疗药品采购系统。主要功能有&#xff1a; 用户管理&#xff1a;管理员列表&#xff1b; 采购管理&#xff1a;采购列表&#xff1b; 药品出库&#xff1a;药品出库&#xff1b; 库存管理&#xff1a;库存统计&#xff1b; 数据维护&#xff1a;药品列表、仓库…

Java多线程常见的成员方法(线程优先级,守护线程,礼让/插入线程)

目录 1.多线程常见的成员方法2.优先级相关的方法3.守护线程&#xff08;备胎线程&#xff09;4.其他线程 1.多线程常见的成员方法 ①如果没有给线程设置名字&#xff0c;线程是有默认名字 的&#xff1a;Thread-X(X序号&#xff0c;从0开始) ②如果要给线程设置名字&#xff0c…

骑砍战团MOD开发(25)-module_animations.py骨骼动画

一.引擎固化骨架 Data\skeleton_bodies.xml:定义系统骨架skel_human,skel_horse. <Skeletons><Skeleton name"skel_human"><Skeleton name"skel_horse"> </Skeletons> CommonRes\skeletons.brf 为skel_human的资源文件,适用BRF打…

第三节 项目commit规范

系列文章目录 目录 系列文章目录 前言 实现方法 总结 前言 多人开发项目时&#xff0c;每次Git提交都不明确提交了什么&#xff0c;增加功能&#xff1f;修复bug&#xff1f;修改了代码格式&#xff1f;没有哦规则。那我们制定制定提交类型及如何写提交信息的规则&#xf…

接口测试工具——ApiFox使用初体验 postman导出和ApiFox导入

目录 ApiFox使用初体验初步使用从postman导出到apifox导入 IDEA简单测试Postman测试工具post请求 接口测试工具swaggerKnife4j1.引入依赖2.配置3.常用注解4.接口测试 JMeter什么是JMeter?JMeter安装配置1.官网下载2.下载后解压3.汉语设置 JMeter的使用方法1.新建线程组2.设置参…