CVE-2022-22954 VMware Workspace ONE Access SSTI RCE 漏洞分析

t01f403073c8dadbe03

前言

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 漏洞进行细致分析。

t01859a55b94782aaec

漏洞描述

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

t01f5e5a46ac9090d11

利用范围

  1. VMware Workspace ONE Access 21.08.0.1, 21.08.0.0,20.10.0.1, 20.10.0.0
  2. VMware Identity Manager(vIDM) 3.3.6, 3.3.5, 3.3.4, 3.3.3
  3. VMware vRealize Automation(vIDM) 7.6
  4. 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前的字符串因来自不受信任的来源,可能就会成为攻击媒介。

t015c14186baf89033d

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

t01a468b1d9a5602dfc

环境搭建

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

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

t01a37241f470b7c53a

动态调式

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

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

t014305d775c1fb7644

errorObj由参数传入。

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

t01b67deaa8a66685a1

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

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

t01249522b02ee0bb32

除了直接用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容器。

6f85ef30-4fa5-4a21-bcfa-26cc808aff8f

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

8205799a-a79f-4b24-b557-905bb1179416

可进行构造的url。

4a200cf6-d280-4810-a8ad-ddc0c3b97014

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

162cdf8f-3b0c-4b0c-8fa7-7490549369d9

漏洞复现

80df2cc2-64ce-4870-a491-0da3a1de3e22

修复建议

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

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将继续以开放创新的态度积极投入各类安全技术研究,持续为安全社区及企业级客户提供高质量技术输出。

想了解更多消息,欢迎关注“星阑科技”微信公众号;

了解技术干货,欢迎关注“星阑PortalLab”微信公众号。

本文由星阑科技原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/275266

主题测试文章,只做测试使用。发布者:1869,转转请注明出处:https://community.anqiangkj.com/archives/18473

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年6月28日 下午3:07
下一篇 2022年6月28日 下午3:12

相关推荐