VMware认证绕过漏洞(CVE-2022-22972)技术深度分析

作者:Sec-Labs | 发布时间:

介绍

VMware最近修补了其VMware Workspace ONE Access、Identity Manager和vRealize Automation产品中的一个重要的认证绕过漏洞(CVE-2022-22972)。该漏洞允许攻击者以任何已知的本地用户身份登录。


补丁检查

VMware的VMSA没有给出关于这个漏洞的内部工作的许多细节。然而,他们确实提供了补丁和解决方法说明。深入研究该补丁是一个好的起点。对于我们的目的,我们使用的是vRealize Automation 7.6,它包含一个嵌入式的vIDM。请注意,其他产品和版本有不同的授权工作流程和端点。补丁的下载和细节可以在这里找到https://kb.vmware.com/s/article/70911。截至目前,解决CVE-2022-22972的最新补丁是28。

VMware发布了累积性补丁,这意味着28号补丁解决了自该产品诞生以来的所有漏洞。这使得我们很难准确地找出最新的漏洞是如何解决的。为了补救这个问题,我们下载了27号补丁,与28号补丁进行比较。在提取补丁后,我们发现在27号补丁中有名为patch-vRA-7.0-19482496-HF27.content的压缩文件,在28号补丁中有名为patch-vRA-7.6.0-19772459.19640138-HF28.content的文件。我们解压这些压缩文件,找到更多的补丁内容。补丁内容文件夹中没有太多明显的差异,但我们看到地平线服务rpm已经移动。

我们使用rpm2cpio来提取这两个rpms的内容。我们发现有三个不同之处:dbConnection-0.1-jar-with-dependencies.jar,analytics-0.1.war,以及frontend-01.war。我们提取了这些.war文件,在frontend-01.war中发现了以下内容。

800199ca4a114444

值得注意的是,我们发现了一个新的HostHeaderFilter.class文件和web.xml中的一些差异,这表明新的HostHeaderFilter被应用于所有的url模式。

85ff5e4b7f114528

我们可以使用Java反编译器将HostHeaderFilter.class转换成HostHeaderFilter.java。

710a4c4efd114621

我们看到,这个过滤器正在拒绝任何带有被认为是无效的Host头的请求。基于此,我们可以开始向应用程序发送带有奇怪的主机头的请求。

运行时检查

在对各种端点进行了不成功的探查后,我们注意到在向登录端点发送无效的主机头时有些奇怪。我们将主机头设置为一个假的值asdf

93a6354946114739

请求本身没有什么值得注意的地方,但是如果我们看一下设备上的horizon.log,我们可以看到应用程序正在试图解决asdf

33dc71bcbd114856

这表明应用程序正试图与我们放在Host头中的任何东西建立连接。

运行一个登录服务器

让我们试着让应用程序与我们连接,看看它试图发送什么样的信息。我们写了下面这个简单的https服务器。

de29c4a8c4114922

在将我们的IP地址插入Host头后,我们在日志中看到一个新的异常。

2e1b0574d7115018

这一失败表明应用程序无法验证我们的证书。这很合理,因为我们服务器上的证书是自签的。在我们把我们的证书添加到设备上的Java证书存储中后,我们可以看到应用程序确实连接到了我们,并在HTTP POST请求中向我们发送了登录信息。请注意,攻击者不需要复制这个步骤。他们可以把他们的登录服务器放在一个有有效证书的公共服务器上。

c6b24c80e3115050

应用程序期望从HTTP服务器得到一个响应,以了解用户是否应该被授予访问权。为了说明这一点,我们重写了我们的服务器,以便对任何POST请求作出200状态的响应。

5688028e1f115105

有了新的服务器,我们就能成功登录了!

382da14dd9115124

 

自动化EXP

到目前为止,我们一直在使用Burp套件代理来修改浏览器发送的请求,但现在我们想把这个工作流程自动化,以便在开发脚本中使用。我们最终想向SAAS/auth/login/embeddedauthbroker/callback发送一个带有自定义Host头的POST。这个端点需要一些额外的元数据被编码在POST的主体中。如果我们检查登录页面的源头,我们会在隐藏的表单字段中找到我们需要的信息。

59350b96f8115153

 

我们的POC从/vcac端点开始发送请求,就像浏览器一样,解析登录页面以提取这些隐藏字段。然后,这些隐藏字段被编码到最后的POST正文中,主机头被设置为我们的自定义登录服务器。然后,POC解析响应以提取认证cookies。这些cookie可以被用来作为所选用户执行操作。

这个脚本可以通过使用CVE-2022-22972绕过vRealize Automation 7.6的认证。Workspace ONE和vIDM有不同的认证端点,但该漏洞的关键仍然是相同的。

我们的POC可以在这里找到 https://github.com/horizon3ai/CVE-2022-22972

摘要

CVE-2022-22972是一个相对简单的主机头操纵漏洞。有动机的攻击者不难开发出对该漏洞的利用。在Shodan.io上快速搜索受影响的VMware应用程序,发现将其暴露在互联网上的组织数量相当少。值得注意的是,医疗保健、教育行业和州政府似乎都有相当数量的组织存在漏洞的类型--使他们在当前和未来面临更大的利用风险。各组织应立即按照VMware安全咨询报告中的指导来解决这些问题。

 

原文链接

https://www.horizon3.ai/vmware-authentication-bypass-vulnerability-cve-2022-22972-technical-deep-dive/

标签:漏洞分享, 学习笔记