CVE-2024-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析_vmware最近漏洞

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

利用范围

  • VMware Workspace ONE Access 21.08.0.1, 21.08.0.0,20.10.0.1, 20.10.0.0
  • VMware Identity Manager(vIDM) 3.3.6, 3.3.5, 3.3.4, 3.3.3
  • VMware vRealize Automation(vIDM) 7.6
  • VMware Cloud Foundation (vIDM) 4.x

漏洞分析

根据freemarker官网文档(https://freemarker.apache.org/docs/ref_builtins_expert.html#ref_builtin_eval)中给出了安全问题的提示。

使用内置函数将字符串计算为 FTL 表达式,FTL 表达式可以访问变量,并调用 Java 方法,例如 “1+2”?eval将返回数字
3,所以?eval前的字符串因来自不受信任的来源,可能就会成为攻击媒介。

在Vmware中的endusercatalog-
ui-1.0-SNAPSHOT-
classes.jar自带的模板customError.ftl就调用了freemarker引擎的eval函数来渲染errObj,这就导致了本次SSTI注入漏洞。

环境搭建

可参考CVE-2022-22972 VMware Workspace ONE Access
身份认证绕过漏洞分析

本次漏洞分析源码所在位置:/opt/vmware/horizon/workspace/webapps/catalog-portal/WEB-INF/lib。

动态调式

已经定位到安全问题所在,接下来寻找渲染customError.ftl模板的相关代码。

在com.vmware.endusercatalog.ui.web.UiErrorController#handleGenericError函数中。

errorObj由参数传入。

查找handleGenericError函数的被调用关系发现。

handleGenericError函数受如上图所示的两个requestMapping所在的控制器UiErrorController调用。

跟进其中出现的getErrorPage函数,位于com.vmware.endusercatalog.ui.web.UiErrorController#getErrorPage。

除了直接用handleGenericError函数拿到需要渲染的模板,还存在handleUnauthorizedError函数通过条件判断,只有一个分支进入handleGenericError

如何构造参数?

在两个requestMapping中,其中的/ui/view/error为API接口,直接访问无法从请求中提取javax.servlet.error.message,从而无法控制errorObj。

寻找/ui/view/error的其他调用,位于com.vmware.endusercatalog.ui.web.UiApplicationExceptionResolver#resolveException函数。

存在对javax.servlet.error.message赋值的过程。

查看resolveException函数的被调用关系,受上方handleAnyGenericException函数调用。

其中@ExceptionHandler表明,该处为异常处理器,当程序直接抛出Exception类型的异常时会进入handleAnyGenericException,再通过调用resolveException函数,进行赋值,最终都会返回/ui/view/error。

而在 handleAnyGenericException 中,进入 resolveException 时会根据异常的类型传入不同的参数,如果异常类不是
LocalizationParamValueException 子类的话则传入
uiRequest.getRequestId(),所以我们需要构造参数可控的地方还需要抛出 LocalizationParamValueException
异常类或其子类异常,这样errorObj所需Attribute
errorJson来自LocalizationParamValueException异常的getArgs。

在LocalizationParamValueException函数,如果可以控制抛出异常的参数,就可以把payload传入errorObj。

在endusercatalog-
auth-1.0-SNAPSHOT.jar中com.vmware.endusercatalog.auth.InvalidAuthContextException,存在一个InvalidAuthContextException异常,继承于LocalizationParamValueException。

在com.vmware.endusercatalog.auth.AuthContext构造函数中抛出异常。

生成 AuthContext对象的地方在AuthContextPopulationInterceptor
拦截器中,而且各项参数均是从请求中获取,这里可构造注入点。

但正常情况下,在 endusercatalog-auth-1.0-SNAPSHOT.jar 中的拦截器类无法访问到类。

但在com.vmware.endusercatalog.ui.UiApplication,使用 @ComponentScan
注解声明自动将com.vmware.endusercatalog.auth包的类装配进bean容器。

在包中com.endusercatalog.ui.config.WebConfig可查找到。

可进行构造的url。

通过如上分析,可构造payload,进行命令执行。

漏洞复现

修复建议

参考漏洞影响范围进行排查,目前官方已发布修复补丁:

https://kb.vmware.com/s/article/88099

网络安全学习路线&资源

【----帮助网安学习,以下所有学习资料免费领!】

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


03网络安全的知识多而杂,怎么科学合理安排?

下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!

点击这里,先领资料再阅读哦~

初级网工

1、网络安全理论知识(2天)

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网络安全面试题

绿盟护网行动

还有大家最喜欢的黑客技术

网络安全源码合集+工具包

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值