【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

渗透技巧 2年前 (2022) admin
448 0 0

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析


【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析
【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析
xxhzz
@PortalLab实验室


前言

在此前分析了CVE-2022-22972  VMware Workspace ONE Access和CVE-2022-22954 VMware Workspace ONE Access SSTI RCE之后,发现当时的安全公告中同时披露了很多cve漏洞,其中就包括CVE-2022-22955和CVE-2022-22957,之前漏洞环境也一直还在,也正好再学习分析一波。

漏洞描述

从4月6号的漏洞公告(https://www.vmware.com/security/advisories/VMSA-2022-0011.html)显示,VMware Workspace ONE Access 在 OAuth2 ACS 框架中有两个身份验证绕过漏洞,CVE-2022-22955就是其中一个,攻击者可通过获取OAuth2客户端的激活码,激活OAuth2客户端以此绕过身份验证;而CVE-2022-22957属于JDBC注入导致的远程代码执行,具有管理访问权限的攻击者通过可控参数构造恶意JDBC URL触发反序列化,从而执行任意命令获取系统权限。

利用范围

产品利用范围可参考https://www.vmware.com/security/advisories/VMSA-2022-0011.html

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

漏洞分析

环境搭建

漏洞环境使用的是VMware Workspace ONE Access 21.08.0.1 OVA
具体搭建可参考https://mp.weixin.qq.com/s/zVYQQgDjcwJKAnX8SZJ5Cw

分析复现

CVE-2022-22955 OAuth2TokenResourceController ACS 身份验证绕过

定位com.vmware.horizon.rest.controller.oauth2.OAuth2TokenResourceController#generateActivationToken

存在路径:/generateActivationToken/{id}

在generateActivationToken方法中将为oauth2客户端生成激活码activationToken
【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析
接着在com.vmware.horizon.rest.controller.oauth2.OAuth2TokenResourceController#activateOauth2Client上方注解说明得很清楚,通过交换activationToken也就是前面获取到的激活码来激活oauth2客户端,获取 client ID 和 client secret,用于/SAAS/auth/oauthtoken做身份认证。
【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

其实也就是获取到client ID 和 client secret后就可以进行身份认证的绕过。

那如果不存在如上分析的 OAuth2 客户端,也就无法利用。

在默认情况下,VMware Workspace ONE Access会安装两个内部客户端。

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

在VMware Workspace ONE Access安装过程中,会调用com.vmware.horizon.rest.controller.system.BootstrapController类进行初始化。

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

本质上会导致com.vmware.horizon.rest.controller.oauth2.OAuth2TokenResourceController#createTenant调用createDefaultServiceOAuth2Client函数,从而创建系统范围内的oauth2 客户端。

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析
【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析
通过如上分析进行漏洞复现,看看实际效果。
首先通过/generateActivationToken/{id},获取oauth2客户端激活码。
【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析
再通过交换activation激活码来激活oauth2客户端,获取a client ID 和 client secret
【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

最后使用 client ID 和 client secret做身份认证,并获取到可用jwt token

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

至此,可通过获取到的jwt token进行身份验证的绕过。

CVE‐2022‐22957 VMware Workspace ONE Access JDBC注入漏洞

VMware Workspace ONE Access 默认安装PostgreSQL数据库。
代码定位到com.vmware.horizon.rest.controller.system.DBConnectionCheckController.class
存在doCheck函数。

获取到jdbcUrl、dbUsername、encryptedPwd(加密后dbPassword)后调用dbConnectionCheckService.checkConnection

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

com.vmware.horizon.datastore.impl. DbConnectionCheckServiceLmpl#checkConnection中将会调用testConnection

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

而在testConnection中会继续调用FactoryHelper.getConnection

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

在FactoryHelper.getConnection中最终调用DriverManager.getConnection用于获取数据库的连接,而其中的jdbc URL完全可控。

【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

这就导致了jdbc注入,从而任意命令执行。

后续利用可参考

https://srcincite.io/blog/2022/08/11/i-am-whoever-i-say-i-am-infiltrating-vmware-workspace-one-access-using-a-0-click-exploit.html

修复建议

根据官方解决方案https://kb.vmware.com/s/article/88098 进行修复。

参考材料

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

2.https://srcincite.io/blog/2022/08/11/i-am-whoever-i-say-i-am-infiltrating-vmware-workspace-one-access-using-a-0-click-exploit.html

3.https://su18.org/post/jdbc-connection-url-attack/

4.https://kb.vmware.com/s/article/88098


关于Portal Lab

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


【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

原文始发于微信公众号(星阑PortalLab):【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析

版权声明:admin 发表于 2022年8月26日 上午11:00。
转载请注明:【技术干货】VMware 系列产品之身份验证绕过和JDBC注入漏洞分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...