ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CVE-2021-21972 vCenter 远程命令执行漏洞分析

2021-02-25 21:29:24  阅读:177  来源: 互联网

标签:21972 Server ui 2021 File entry vCenter dir


img

报告编号:B6-2021-022501

报告来源:360NoahLab

报告作者:Ricter

更新日期:2021-02-25

0x01漏洞简介

vSphere 是 VMware 推出的虚拟化平台套件,包含 ESXi、vCenter Server 等一系列的软件。其中 vCenter Server 为 ESXi 的控制中心,可从单一控制点统一管理数据中心的所有 vSphere 主机和虚拟机,使得 IT 管理员能够提高控制能力,简化入场任务,并降低 IT 环境的管理复杂性与成本。

vSphere Client(HTML5)在 vCenter Server 插件中存在一个远程执行代码漏洞。未授权的攻击者可以通过开放 443 端口的服务器向 vCenter Server 发送精心构造的请求,从而在服务器上写入 webshell,最终造成远程任意代码执行。

0x02影响范围

- vmware:vcenter_server7.0 U1c 之前的 7.0 版本

- vmware:vcenter_server6.7 U3l 之前的 6.7 版本

- vmware:vcenter_server6.5 U3n 之前的 6.5 版本

0x03漏洞影响

VMware已评估此问题的严重程度为 严重 程度,CVSSv3 得分为 9.8。

0x04漏洞分析

vCenter Server 的 vROPS 插件的 API 未经过鉴权,存在一些敏感接口。其中 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();

代码逻辑是将 TAR 文件解压后上传到 /tmp/unicorn_ova_dir 目录。注意到如下代码:

                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 拼接并写入文件。如果文件名内存在 …/ 即可实现目录遍历。

对于 Linux 版本,可以创建一个包含 …/…/home/vsphere-ui/.ssh/authorized_keys 的 TAR 文件并上传后利用 SSH 登陆:

图片

针对 Windows 版本,可以在目标服务器上写入 JSP webshell 文件,由于服务是 System 权限,所以可以任意文件写。

0x05漏洞修复

升级到安全版本:

- vCenter Server 7.0 版本升级到 7.0.U1c

- vCenter Server 6.7版本升级到 6.7.U3l

- vCenter Server 6.5版本升级到 6.5 U3n

临时修复建议

\1. SSH远连到vCSA(或远程桌面连接到Windows VC)

\2. 备份以下文件:

- Linux系文件路径为:/etc/vmware/vsphere-ui/compatibility-matrix.xml (vCSA)

- Windows文件路径为:C:\ProgramData\VMware\vCenterServer\cfg\vsphere-ui (Windows VC)

\3. 使用文本编辑器将文件内容修改为:

图片

\4. 使用vmon-cli -r vsphere-ui命令重启vsphere-ui服务

5.访问https://<VC-IP-or-FQDN>/ui/vropspluginui/rest/services/checkmobregister,显示404错误

图片

\6. 在vSphere ClientSolutions->Client PluginsVMWare vROPS插件显示为incompatible

图片

0x06参考链接

1、 NoahLab CVE-2021-21972 vCenter 6.5-7.0 RCE 漏洞分析

http://noahblog.360.cn/vcenter-6-5-7-0-rce-lou-dong-fen-xi/

转载自https://mp.weixin.qq.com/s/tg64Hy8KECjYPHt98vBLcQ

标签:21972,Server,ui,2021,File,entry,vCenter,dir
来源: https://blog.csdn.net/weixin_45728976/article/details/114106526

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有