Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2021-21972 — CVE-2021-21972 – ᴠᴍᴡᴀʀᴇ ᴄʟɪᴇɴᴛ ᴜɴᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴄᴏᴅᴇ ɪɴᴊᴇᴄᴛɪᴏɴ (ʀᴄᴇ) | Kitploit
Ferramentas/GitHubGitHub/orangmuda/cve-2021-21972
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoFerramenta de Acesso RemotoDesenvolvimento de Payloads
GitHuborangmuda/cve-2021-21972

CVE-2021-21972

CVE-2021-21972 – ᴠᴍᴡᴀʀᴇ ᴄʟɪᴇɴᴛ ᴜɴᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴄᴏᴅᴇ ɪɴᴊᴇᴄᴛɪᴏɴ (ʀᴄᴇ)

Ver Repositório
11410há 4 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2021-21972

[CVE-2021-21972] Upload de Arquivo Não Autorizado do VMware vSphere Client para Execução Remota de Código (RCE)


O vSphere Web Client (HTML5) é essencialmente uma interface administrativa que permite o gerenciamento de uma instalação vSphere. O vSphere Client fornece a um administrador acesso às funções principais do vSphere sem a necessidade de acessar um servidor vSphere diretamente. Ele permite que administradores criem novas máquinas virtuais e gerenciem as existentes e seus recursos. Como uma aplicação web multiplataforma, pode ser usado em todos os sistemas operacionais suportados através das versões suportadas de diferentes navegadores web.

CVE-2021-21972 é uma vulnerabilidade de upload de arquivo não autorizado no vCenter Server que leva à execução remota de código no servidor remoto. O problema decorre da falta de autenticação no vRealize Operations vCenter Plugin. Recebeu uma pontuação crítica de CVSSv3 de 9.8 em 10.0. Um atacante remoto não autenticado poderia explorar esta vulnerabilidade enviando um arquivo especialmente criado para um endpoint vulnerável do vCenter Server que seja publicamente acessível. As versões 6.5, 6.7 e 7.0 do VMware vCenter Server são afetadas por esta vulnerabilidade. A exploração bem-sucedida desta vulnerabilidade resultaria na obtenção de privilégios irrestritos de execução remota de código (RCE) no sistema operacional subjacente do vCenter Server. Apesar do fato de que esta vulnerabilidade decorre do vRealize Operations vCenter Plugin, o aviso da VMware confirma que este plugin está incluído em todas as instalações padrão do vCenter Server. Isso significa que o endpoint vulnerável está disponível independentemente da presença do vRealize Operations.

No blogpost original aqui, a descoberta da vulnerabilidade é explicada da forma mais detalhada possível, bem como dois caminhos separados para alcançar RCE. Para sistemas Windows, um atacante poderia enviar um arquivo .jsp especialmente criado para obter privilégios de NT AUTHORITY\SYSTEM no sistema operacional subjacente. Para sistemas Linux, um atacante precisaria gerar e enviar uma chave pública para o caminho authorized_keys do servidor e depois conectar-se ao servidor vulnerável via SSH para obter privilégios de usuário vsphere-ui. (se o serviço SSH estiver em execução e acessível pela rede)

vropsplugin-service.jar é um arquivo java do plugin vropspluginui e inclui algumas classes e outras funções e métodos relacionados. A parte vulnerável do código é ilustrada abaixo. Este trecho de código pertence ao ServicesController.class no controlador do vropsplugin-service.jar. Como você pode ver no trecho de código abaixo, a função uploadOvaFile é responsável pelo endpoint/URL /ui/vropspluginui/rest/services/uploadova

Caminho completo da classe vulnerável: vropsplugin-service\com\vmware\vropspluginui\mvc\ServicesController.class

@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;
    try {
      if (code != 200) {
        response.sendError(code, "Arguments Missing");
        return;
      } 
      wr = response.getWriter();
    } catch (IOException e) {
      e.printStackTrace();
      logger.info("upload Ova Controller Ended With Error");
    } 
    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();
          for (String str : entries) {
            File currentFile = new File(dir.getPath(), str);
            currentFile.delete();
          } 
          logger.info("Successfully cleaned : /tmp/unicorn_ova_dir");
        } 
        TarArchiveInputStream in = new TarArchiveInputStream(inputStream);
        TarArchiveEntry entry = in.getNextTarEntry();
        List<String> result = new ArrayList<String>();
        while (entry != null) {
          if (entry.isDirectory()) {
            entry = in.getNextTarEntry();
            continue;
          } 
          File curfile = new File("/tmp/unicorn_ova_dir", entry.getName());
          File parent = curfile.getParentFile();
          if (!parent.exists())
            parent.mkdirs(); 
          OutputStream out = new FileOutputStream(curfile);
          IOUtils.copy((InputStream)in, out);
          out.close();
          result.add(entry.getName());
          entry = in.getNextTarEntry();
        } 
        in.close();
        logger.info("Successfully deployed File at Location :/tmp/unicorn_ova_dir");
      } catch (Exception e) {
        logger.error("Unable to upload OVA file :" + e);
        returnStatus = "FAILED";
      }  
    wr.write(returnStatus);
    wr.flush();
    wr.close();
  }

Na perspectiva de um atacante, o manipulador (handler) para esta classe está realizando as seguintes ações:

  • Recebendo o parâmetro uploadFile com requisição do método POST (linha 2)
  • Lendo o parâmetro uploadFile e escrevendo o conteúdo deste parâmetro na variável inputStream (linha 22)
  • Abrindo os dados resultantes como um arquivo .tar (linha 34)
  • Recuperando todas as entradas do arquivo (linha 35)
  • Copiando cada entrada atual criada no disco usando a convenção de nome de arquivo: /tmp/unicorn_ova_dir + entry.getName() (linhas 42 e 47)

Prova de Conceito: Para explorar esta vulnerabilidade, você pode usar os seguintes passos

  1. Verificar a vulnerabilidade
  2. Criar uma entrada de arquivo .tar contendo a string ../../
  3. Enviar o arquivo .tar manipulado para o servidor
  4. Ir para o caminho relacionado e chamar o arquivo que você enviou /statsreport/uploadedFileName.jsp

Para verificar a vulnerabilidade, você pode usar a seguinte requisição

GET /ui/vropspluginui/rest/services/getstatus HTTP/1.1
Host: vulnerablehost
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36
Connection: close

Se a resposta da requisição acima for semelhante às respostas abaixo, significa que o host remoto é vulnerável ao CVE-2021-21972

HTTP/1.1 200 
Strict-Transport-Security: max-age=30758400;includeSubDomains
X-XSS-Protection: 1; mode=block
Set-Cookie: VSPHERE-UI-JSESSIONID=35CB9D3F277D6B8413F099F93FB3A5CE; Path=/ui; Secure; HttpOnly
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 141
Date: Tue, 06 Apr 2021 14:32:30 GMT
Connection: close
Server: Anonymous

{"States":"[]","Install Progress":"UNKNOWN","Config Progress":"UNKNOWN","Config Final Progress":"UNKNOWN","Install Final Progress":"UNKNOWN"}
HTTP/1.0 200 OK
strict-transport-security: max-age=30758400;includeSubDomains
x-xss-protection: 1; mode=block
set-cookie: VSPHERE-UI-JSESSIONID=3D8FE882F9BD3DD1C66C10DFD00022C9; Path=/ui; Secure; HttpOnly
content-type: text/plain;charset=ISO-8859-1
content-length: 374
date: Tue, 06 Apr 2021 14:33:22 GMT
server: envoy
x-envoy-upstream-service-time: 1
connection: close
Baixar ferramenta