CVE-2021-21975&CVE-2021-21983 VMware vRealize SSRF、任意文件上传漏洞分析
字数 1570 2025-08-05 12:50:18

VMware vRealize SSRF与任意文件上传漏洞分析 (CVE-2021-21975 & CVE-2021-21983)

漏洞概述

本文档详细分析VMware vRealize Operations Manager中的两个高危漏洞:

  1. CVE-2021-21975 - 服务器端请求伪造(SSRF)漏洞
  2. CVE-2021-21983 - 任意文件上传漏洞

这两个漏洞可以组合利用,最终实现远程代码执行(RCE)。

CVE-2021-21975 (SSRF漏洞)

漏洞位置

位于casa/WEB-INF/classes/com/vmware/ops/casa/api/ClusterDefinitionController.class中的/nodes/thumbprints路由

漏洞分析

  1. 该路由接收POST请求,将传入的值作为address参数
  2. 调用ClusterDefinitionService#getNodesThumbprints方法
  3. 方法中实例化HttpMapFunction类并调用其execute方法
  4. execute方法处理流程:
    • 将传入的address转为数组形式
    • 遍历数组,为每个地址创建HttpTask实例
    • 使用HttpGetTask发送GET请求
    • 通过invokeAll多线程执行所有请求

漏洞复现

  1. /nodes/thumbprints发送POST请求
  2. 在请求体中包含目标内部地址
  3. 服务器会向该地址发起请求,返回响应内容

CVE-2021-21983 (任意文件上传漏洞)

漏洞位置

位于casa/classes/com/vmware/vcops/casa/appconfig/CertificateController.class

漏洞分析

  1. 该控制器接收两个POST参数:
    • name - 文件名
    • file - 文件内容
  2. 调用CertificateService#handleCertificateFile方法
  3. 方法中直接创建File对象并使用transferTo上传文件
  4. 由于两个参数完全可控且无任何过滤,导致任意文件上传

漏洞复现前提

需要有有效的Authorization头信息(8.3之前的版本会通过SSRF泄露此信息)

漏洞复现步骤

  1. 构造包含恶意文件内容的POST请求
  2. 设置name参数为目标路径(如webshell路径)
  3. 提供有效的Authorization
  4. 服务器会将文件写入指定位置

组合利用实现RCE

利用思路

  1. 首先利用SSRF漏洞获取Authorization头信息(8.3以下版本)
  2. 然后使用获取的认证信息配合文件上传漏洞写入webshell
  3. 最后访问上传的webshell实现远程代码执行

具体步骤

  1. 发送SSRF请求获取认证信息
  2. 使用获取的认证构造文件上传请求
  3. 上传包含恶意代码的文件(如JSP webshell)到可访问目录
  4. 通过浏览器或其他工具访问上传的webshell
  5. 执行任意系统命令

影响版本

  • VMware vRealize Operations Manager 8.1.x
  • VMware vRealize Operations Manager 8.0.x
  • 可能影响其他相关版本

防护建议

  1. 及时升级到最新版本
  2. 限制网络访问,仅允许可信IP访问管理接口
  3. 实施严格的输入验证和输出编码
  4. 对文件上传功能实施严格的白名单验证
  5. 使用Web应用防火墙(WAF)规则阻止可疑请求

参考链接

VMware vRealize SSRF与任意文件上传漏洞分析 (CVE-2021-21975 & CVE-2021-21983) 漏洞概述 本文档详细分析VMware vRealize Operations Manager中的两个高危漏洞: CVE-2021-21975 - 服务器端请求伪造(SSRF)漏洞 CVE-2021-21983 - 任意文件上传漏洞 这两个漏洞可以组合利用,最终实现远程代码执行(RCE)。 CVE-2021-21975 (SSRF漏洞) 漏洞位置 位于 casa/WEB-INF/classes/com/vmware/ops/casa/api/ClusterDefinitionController.class 中的 /nodes/thumbprints 路由 漏洞分析 该路由接收POST请求,将传入的值作为 address 参数 调用 ClusterDefinitionService#getNodesThumbprints 方法 方法中实例化 HttpMapFunction 类并调用其 execute 方法 execute 方法处理流程: 将传入的 address 转为数组形式 遍历数组,为每个地址创建 HttpTask 实例 使用 HttpGetTask 发送GET请求 通过 invokeAll 多线程执行所有请求 漏洞复现 向 /nodes/thumbprints 发送POST请求 在请求体中包含目标内部地址 服务器会向该地址发起请求,返回响应内容 CVE-2021-21983 (任意文件上传漏洞) 漏洞位置 位于 casa/classes/com/vmware/vcops/casa/appconfig/CertificateController.class 漏洞分析 该控制器接收两个POST参数: name - 文件名 file - 文件内容 调用 CertificateService#handleCertificateFile 方法 方法中直接创建 File 对象并使用 transferTo 上传文件 由于两个参数完全可控且无任何过滤,导致任意文件上传 漏洞复现前提 需要有有效的 Authorization 头信息(8.3之前的版本会通过SSRF泄露此信息) 漏洞复现步骤 构造包含恶意文件内容的POST请求 设置 name 参数为目标路径(如webshell路径) 提供有效的 Authorization 头 服务器会将文件写入指定位置 组合利用实现RCE 利用思路 首先利用SSRF漏洞获取 Authorization 头信息(8.3以下版本) 然后使用获取的认证信息配合文件上传漏洞写入webshell 最后访问上传的webshell实现远程代码执行 具体步骤 发送SSRF请求获取认证信息 使用获取的认证构造文件上传请求 上传包含恶意代码的文件(如JSP webshell)到可访问目录 通过浏览器或其他工具访问上传的webshell 执行任意系统命令 影响版本 VMware vRealize Operations Manager 8.1.x VMware vRealize Operations Manager 8.0.x 可能影响其他相关版本 防护建议 及时升级到最新版本 限制网络访问,仅允许可信IP访问管理接口 实施严格的输入验证和输出编码 对文件上传功能实施严格的白名单验证 使用Web应用防火墙(WAF)规则阻止可疑请求 参考链接 作者博客: https://www.ghtwf01.cn VMware安全公告: https://www.vmware.com/security/advisories/VMSA-2021-0004.html