中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行vCenter 6.5-7.0 RCE漏洞CVE-2021-21972分析

發布時間:2021-12-29 15:44:39 來源:億速云 閱讀:220 作者:柒染 欄目:安全技術

如何進行vCenter 6.5-7.0 RCE漏洞CVE-2021-21972分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

0x01. 漏洞介紹

vCenter Server 為 ESXi 的控制中心,可從單一控制點統一管理數據中心的所有 vSphere 主機和虛擬機。

CVE-2021-21972 是Vcenter的一個未授權文件上傳漏洞。該漏洞可以上傳文件至vcenter服務器的任意位置。由于該服務System權限,可以任意寫,可上傳webshell并執行,如果是Linux環境并開放了ssh,可上傳公鑰直接通過ssh登錄。

0x02. 漏洞分析

vCenter Server 的 vROPS 插件的 API 采用spring編寫。部分敏感接口未經過鑒權,其中uploadova接口存在一個上傳 OVA 文件的功能:

@RequestMapping(
        value = {"/uploadova"},
        method = {RequestMethod.POST}
    )
    public void uploadOvaFile(@RequestParam(value = "uploadFile",required = true) CommonsMultipartFile uploadFile, HttpServletResponse response) throws Exception {
        logger.info("Entering uploadOvaFile api");
        int code = uploadFile.isEmpty() ? 400 : 200;
        PrintWriter wr = null;
...
        response.setStatus(code);
        String returnStatus = "SUCCESS";
        if (!uploadFile.isEmpty()) {
            try {
                logger.info("Downloading OVA file has been started");
                logger.info("Size of the file received  : " + uploadFile.getSize());
                InputStream inputStream = uploadFile.getInputStream();
                File dir = new File("/tmp/unicorn_ova_dir");
                if (!dir.exists()) {
                    dir.mkdirs();
                } else {
                    String[] entries = dir.list();
                    String[] var9 = entries;
                    int var10 = entries.length;

                    for(int var11 = 0; var11 < var10; ++var11) {
                        String entry = var9[var11];
                        File currentFile = new File(dir.getPath(), entry);
                        currentFile.delete();
                    }

                    logger.info("Successfully cleaned : /tmp/unicorn_ova_dir");
                }

                TarArchiveInputStream in = new TarArchiveInputStream(inputStream);
                TarArchiveEntry entry = in.getNextTarEntry();
                ArrayList result = new ArrayList();
while(entry != null) {
                    if (entry.isDirectory()) {
                        entry = in.getNextTarEntry();
                    } else {
                        File curfile = new File("/tmp/unicorn_ova_dir", entry.getName());
                        File parent = curfile.getParentFile();
                        if (!parent.exists()) {
                            parent.mkdirs();

目的是將 TAR 文件解壓后上傳到/tmp/unicorn_ova_dir目錄,直接將 tar 文件名與/tmp/unicorn_ova_dir拼接并寫入文件。

因此文件名中包含../繞過當前目錄限制,上傳文件至任意位置。

通常情況下可以在目標服務器上寫入 JSP webshell 文件(服務是 System 權限,可以任意文件寫),利用工具 https://github.com/NS-Sp4ce/CVE-2021-21972。

如果環境為Linux且開放了ssh,可以創建一個包含../../home/vsphere-ui/.ssh/authorized_keys的 tar 文件并上傳,通過ssh登陸:

$ ssh 10.211.55.4 -lvsphere-ui

VMware vCenter Server 7.0.1.00100

Type: vCenter Server with an embedded Platform Services Controller

vsphere-ui@bogon [ ~ ]$ id
uid=1016(vsphere-ui) gid=100(users) groups=100(users),59001(cis)

0x03 檢測poc

#!/usr/bin/env python
# coding: utf-8
from urllib.parse import urljoin

from pocsuite3.api import POCBase, Output, register_poc, logger, requests


class DemoPOC(POCBase):
    vulID = ''
    version = '1.0'
    author = ['']
    vulDate = '2021-02-24'
    createDate = '2021-02-24'
    updateDate = '2021-02-24'
    references = ['']
    name = 'VMware vCenter 未授權RCE漏洞'
    appPowerLink = ''
    appName = 'VMware vCenter'
    appVersion = ' 7.0 U1c 之前的 7.0 版本、6.7 U3l 之前的 6.7 版本、 6.5 U3n 之前的 6.5 版本'
    vulType = ''
    desc = '''
    VMware vCenter 未授權RCE漏洞
    '''
    samples = ['']
    install_requires = ['']

    def _verify(self):
        result = {}

        try:
            vul_url = urljoin(self.url, "/ui/vropspluginui/rest/services/uploadova")
            resp1 = requests.get(self.url)
            resp2 = requests.get(vul_url)
            if '/vsphere-client' in resp1.text and resp2.status_code == 405:
                result['VerifyInfo'] = {}
                result['VerifyInfo']['URL'] = self.url
        except Exception as e:
            logger.error(e)

        return self.parse_output(result)

    def _attack(self):
        return self._verify()

    def parse_output(self, result):
        output = Output(self)
        if result:
            output.success(result)
        else:
            output.fail('Internet nothing returned')
        return output


register_poc(DemoPOC)

0x04 修復方式

vmware修復方法比較簡單,直接關閉插件。

關于如何進行vCenter 6.5-7.0 RCE漏洞CVE-2021-21972分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

工布江达县| 五家渠市| 禹城市| 手机| 江油市| 静安区| 泽普县| 河源市| 河间市| 永昌县| 雷山县| 虹口区| 洛南县| 高碑店市| 长白| 阳城县| 宜章县| 田林县| 雷波县| 镇远县| 略阳县| 桂阳县| 祁门县| 上饶市| 土默特左旗| 龙江县| 张家口市| 汉阴县| 宣汉县| 沈丘县| 临汾市| 安福县| 翁牛特旗| 伊宁市| 奉新县| 尼勒克县| 东莞市| 壶关县| 项城市| 宝兴县| 台中县|