vCenter 6.5-7.0 RCE 漏洞复现(CVE-2021-21972)附POC

目录

一. 漏洞介绍

二. 影响范围

三. 漏洞复现

四. 漏洞修复

五. 漏洞POC


一. 漏洞介绍

       vSphere 是 VMware 推出的虚拟化平台套件,包含 ESXi、vCenter Server 等一系列的软件。其中 vCenter Server 为 ESXi 的控制中心,可从单一控制点统一管理数据中心的所有 vSphere 主机和虚拟机。

       2021年02月24日,某些平台监测到 Vmware官方发布了vCenter Server安全更新,修复了vSphereClient (HTML5)在vCenter Server插件vRealizeOperations(vROps)中的一个远程代码执行漏洞(CVE-2021-21972)。vSphere Client(HTML5) 在 vCenter Server 插件中存在一个远程执行代码漏洞。未授权的攻击者可以通过开放 443 端口的服务器向 vCenter Server 发送精心构造的请求,写入webshell,控制服务器。

二. 影响范围

  • vmware:vcenter_server 7.0 U1c 之前的 7.0 版本
  • vmware:vcenter_server 6.7 U3l 之前的 6.7 版本
  • vmware:vcenter_server 6.5 U3n 之前的 6.5 版本

三. 漏洞复现

1. 漏洞环境搭建

由于环境搭建挺复杂,这里没有搭建,可以参考:https://www.o2oxy.cn/3127.html (虽然写的挺详细但是安装的时候还是会出现很多问题)

启动后环境类似如下

2. 漏洞利用

漏洞所在地址为:

https://ip/ui/vropspluginui/rest/services/updateova

访问,如果返回405,则代表存在漏洞

fofatitle="+ ID_VC_Welcome +"

四. 漏洞修复

升级到安全版本

  • vCenter Server 7.0 版本升级到 7.0.U1c
  • vCenter Server 6.7版本升级到 6.7.U3l
  • vCenter Server 6.5版本升级到 6.5 U3n

五. 漏洞POC

import requests
from requests.packages import urllib3
urllib3.disable_warnings()
import argparse
import os
def url():
		parser = argparse.ArgumentParser(description='vCenter 6.5-7.0 RCE 漏洞复现(CVE-2021-21972)POC')
		parser.add_argument('target_url',type=str,help='The target address,example: https://192.168.140.153:4445')
		args = parser.parse_args() 
		global url
		url = args.target_url
		if url.startswith('http://') or url.startswith('https://'):
			pass
		else:
			print('[-]Please include http:// or https:// in the URL!!')
			os._exit(0)
		if url.endswith('/'):
			url = url[:-1]
		print('[+]author:chenchen')
		print("[-]目标地址:",url)
		print("[-]正在执行漏洞检测...")
		return url
def poc():
	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',
		"Content-Type":"application/x-www-form-urlencoded"
	}
	url_v = url + '/ui/vropspluginui/rest/services/updateova'
	try:
		code = requests.get(url=url_v,headers=headers,timeout=4,verify=False).status_code
		print('status_code:',code)
		if code == 405:
			print('[+]漏洞存在')
		else:
			print('[-]漏洞不存在')
	except:
		print('[-]发生错误')
if __name__ == '__main__':
	url()
	poc()

          ——心,若没有栖息的地方,到哪都是流浪

猜你喜欢

转载自blog.csdn.net/qq_44159028/article/details/114659086