项目介绍

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 命令即可

漏洞复现

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

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

漏洞分析

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

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

认证绕过漏洞

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

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

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

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

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

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

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

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

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

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

groovy 代码执行

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

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

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

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

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

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

参考链接

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

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