【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

admin 2022年6月28日09:47:04评论82 views字数 3374阅读11分14秒阅读模式

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析


【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析
xxhzz
@PortalLab实验室

前言

4月6日和5月18日,VMware官方发布的两则安全公告中显示,关乎旗下产品的CVE漏洞多达10个,其中不乏有CVSSv3评分9.8的高危漏洞!如此高频的出洞速率,吸引了笔者注意。继上篇CVE-2022-22972  VMware Workspace ONE Access 身份认证绕过漏洞分析之后,笔者将对CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞进行细致分析。
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析


漏洞描述

根据4月6日VMware官方发布的安全公告,官方已更新解决了多个产品的安全问题。其中CVE-2022-22954,CVSS评分为9.8,危害等级为严重。该漏洞是由于VMware Workspace ONE Access and Identity Manager 包含一个服务器端模板注入漏洞,导致具有网络访问权限的恶意攻击者可进行远程代码执行。

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

利用范围

  • 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前的字符串因来自不受信任的来源,可能就会成为攻击媒介。

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析
在Vmware中的endusercatalog-ui-1.0-SNAPSHOT-classes.jar自带的模板customError.ftl就调用了freemarker引擎的eval函数来渲染errObj,这就导致了本次SSTI注入漏洞。
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析


环境搭建

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

本次漏洞分析源码所在位置:/opt/vmware/horizon/workspace/webapps/catalog-portal/WEB-INF/lib。
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析


动态调式

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

在com.vmware.endusercatalog.ui.web.UiErrorController#handleGenericError函数中。
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析
errorObj由参数传入。
查找handleGenericError函数的被调用关系发现。
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析
handleGenericError函数受如上图所示的两个requestMapping所在的控制器UiErrorController调用。
跟进其中出现的getErrorPage函数,位于com.vmware.endusercatalog.ui.web.UiErrorController#getErrorPage。
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析
除了直接用handleGenericError函数拿到需要渲染的模板,还存在handleUnauthorizedError函数通过条件判断,只有一个分支进入handleGenericError

如何构造参数?

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

寻找/ui/view/error的其他调用,位于com.vmware.endusercatalog.ui.web.UiApplicationExceptionResolver#resolveException函数。
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

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

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

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析
其中@ExceptionHandler表明,该处为异常处理器,当程序直接抛出Exception类型的异常时会进入handleAnyGenericException,再通过调用resolveException函数,进行赋值,最终都会返回/ui/view/error。

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

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析
在LocalizationParamValueException函数,如果可以控制抛出异常的参数,就可以把payload传入errorObj。
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

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

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

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

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

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

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

但在com.vmware.endusercatalog.ui.UiApplication,使用 @ComponentScan 注解声明自动将com.vmware.endusercatalog.auth包的类装配进bean容器。
【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

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

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

可进行构造的url。

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

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

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

漏洞复现

【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析


修复建议

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

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

参考材料

1.https://www.vmware.com/security/advisories/VMSA-2022-0011.html

2.https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=vmware

3.https://mp.weixin.qq.com/s/X_E0zWONLVUQcgP6nZ78Mw?scene=21#wechat_redirect

4.https://mp.weixin.qq.com/s/zVYQQgDjcwJKAnX8SZJ5Cw


关于Portal Lab

星阑科技 Portal Lab 致力于前沿安全技术研究及能力工具化。主要研究方向为API 安全、应用安全、攻防对抗等领域。实验室成员研究成果曾发表于BlackHat、HITB、BlueHat、KCon、XCon等国内外知名安全会议,并多次发布开源安全工具。未来,Portal Lab将继续以开放创新的态度积极投入各类安全技术研究,持续为安全社区及企业级客户提供高质量技术输出。



【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

原文始发于微信公众号(星阑PortalLab):【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月28日09:47:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【技术干货】CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析http://cn-sec.com/archives/1140205.html

发表评论

匿名网友 填写信息