注:本文仅分享个人漏洞复现及排查,请勿用于非法途径。
概述
CVE-2021-21972 vmware vcenter的一个未授权的命令执行漏洞。该漏洞可以上传一个webshell至vcenter服务器的任意位置,然后执行webshell即可。
vSphere Client(HTML5)在 vCenter Server 插件中存在一个远程执行代码漏洞。未授权的攻击者可以通过开放 443 端口的服务器向 vCenter Server 发送精心构造的请求,从而在服务器上写入 webshell,最终造成远程任意代码执行。在 CVE-2021-21972 VMware vCenter Server 远程代码漏洞 中,攻击者可直接通过443端口构造恶意请求,执行任意代码,控制vCenter。
影响版本
VMware vCenter Server 7.0系列 < 7.0.U1c
VMware vCenter Server 6.7系列 < 6.7.U3l
VMware vCenter Server 6.5系列 < 6.5 U3n
复现过程
环境搭建
笔者这里搭建的版本为6.7.0 u2,安装教程可参考下面链接:
https://cloud.tencent.com/developer/news/246135
内部版本号和版本对应关系
https://www.mr-mao.cn/archives/vmware-vcenter-release-version.html
复现
vCenter Server 的 vROPS 插件的 API 未经过鉴权,存在一些敏感接口。其中 uploadova接口存在一个上传 OVA 文件的功能:代码逻辑是将 TAR 文件解压后上传到 /tmp/unicorn_ova_dir目录。
直接将 TAR 的文件名与 /tmp/unicorn_ova_dir拼接并写入文件。如果文件名内存在 ../即可实现目录遍历。对于 Linux 版本,可以创建一个包含 ../../home/vsphere-ui/.ssh/authorized_keys的 TAR 文件并上传后利用 SSH 登陆
poc探测
通过访问:https://10.0.12.12/ui/vropspluginui/rest/services/uploadova的回包来判断是否存在漏洞(回404则不存在漏洞,200,405则代表存在漏洞)

EXP:
这里复用网上的exp,但是有一个注意的点,默认是写到磁盘根目录的,故如果直接写文件名就会报错,操作不被允许
https://github.com/NS-Sp4ce/CVE-2021-21972

python CVE-2021-21972.py -t 10.0.12.12 -o win -f cmdjsp.jsp -p a\cmd.jsp

因为是写jsp脚本的形式,故要写在vcenter可执行权限目录下,默认安装路径为
C:\ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\
这里执行exp,将jsp木马写入webapps\statsreport\目录下,文件名为test.jsp


访问该jsp,成功执行

应急排查
因为前期的利用过程并不是通过http请求获取,故访问日志中并没有记录,但是有一点,因为利用方式是通过上传shell,故后续会有访问shell文件的记录,此可作为一个排查点(注:利用方式不唯一,这只作为一个排查方向)
https://kb.vmware.com/s/article/2110014?lang=zh_CN
VMware vCenter Server 6.0 日志位于 %ALLUSERSPROFILE%\VMWare\vCenterServer\logs 文件夹中。VMware vCenter Server Appliance 6.0 日志位于 /var/log/vmware/ 文件夹中
vmware vcenter 日志路径:C:\ProgramData\VMware\vCenterServer\logs\perfcharts

修复建议
- vCenter Server7.0版本升级到7.0.U1c
- vCenter Server6.7版本升级到6.7.U3l
- vCenter Server6.5版本升级到6.5 U3n