HackZones
Introducción
Sección titulada «Introducción»Este documento detalla la resolución completa de la máquina HackZones, desarrollada por d1se0 para DockerLabs y clasificada con un nivel de dificultad Medio.
El objetivo es guiar paso a paso el proceso de compromiso del sistema:
- Reconocimiento: Descubrimiento de servicios expuestos y enumeración del sitio web.
- Explotación: Carga de una reverse shell a través de una funcionalidad vulnerable de subida de archivos.
- Escalada de privilegios: Extracción de credenciales internas y abuso de configuraciones inseguras de
sudopara obtener acceso aroot.
Todo el procedimiento se realizó en un entorno aislado de DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | HackZones |
| Autor | d1se0 |
| Dificultad | Medio |
| Fecha | 17/11/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Descomprimimos y desplegamos la máquina:
unzip HackZones.zipsudo bash auto_deploy.sh HackZones.tar
Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del entorno
Sección titulada «1.1 Organización del entorno»mkdir -p HackZones/{content,exploits,nmap,gobuster,scripts}cd HackZones1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos abiertos encontrados:
- 22/tcp — SSH
- 53/tcp — DNS
- 80/tcp — HTTP

1.3 Enumeración HTTP
Sección titulada «1.3 Enumeración HTTP»Ejecutamos un escaneo inicial con Feroxbuster:
feroxbuster -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txtAunque no se revelan rutas interesantes, el archivo index muestra un dominio interno: hackzones.hl.
Lo agregamos en /etc/hosts:
echo "172.17.0.2 hackzones.hl" | sudo tee -a /etc/hostsCon esto realizamos un segundo escaneo:
feroxbuster -u http://hackzones.hl/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt
Rutas relevantes:
-
/index— Página principal informativa
-
/uploads— Directorio accesible públicamente -
/dashboard.html— Panel de usuario con opción para subir imagen de perfil
1.4 Enumeración DNS
Sección titulada «1.4 Enumeración DNS»Realizamos un intento de transferencia de zona:
dig axfr @172.17.0.2 hackzone.hlEl servidor permite la operación, pero únicamente revela una flag y no información útil para la explotación.
Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»En el dashboard se permite subir una imagen de perfil, sin ninguna validación de tipo o contenido. Esto permite cargar un archivo PHP malicioso para obtener ejecución remota.
Creamos shell.php con una reverse shell en PHP y lo subimos como si fuera una foto de perfil.
Luego verificamos su ubicación en /uploads:

Activamos el listener:
nc -nlvp 443Hacemos clic sobre el archivo y obtenemos una shell como www-data:

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De www-data → mrrobot
Sección titulada «3.1 De www-data → mrrobot»Dentro de /var/www/html/supermegaultrasecrefolder encontramos el script secret.sh:

El contenido indica que debe ejecutarse como root:

El script revela una contraseña válida para el usuario mrrobot.
Probamos acceso:

Acceso correcto.
3.2 De mrrobot → root
Sección titulada «3.2 De mrrobot → root»Revisamos permisos:
sudo -l
Se permite ejecutar cat como root, lo que ya sería suficiente para leer /etc/shadow.
Sin embargo, encontramos un archivo interesante:

Leyendo el archivo:

El archivo contiene directamente las credenciales de root.
Iniciamos sesión:
su root
Confirmamos privilegios:

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»- Validación inexistente en la subida de archivos, permitiendo ejecución remota de código.
- Transferencia de zona DNS habilitada, exponiendo información interna.
- Credenciales almacenadas en texto plano dentro de archivos del sistema.
- Permisos de sudo mal configurados, permitiendo a un usuario leer archivos críticos con
cat. - Script sensible (
secret.sh) accesible desde el servidor web, revelando contraseñas.
Recomendaciones
Sección titulada «Recomendaciones»- Implementar validación estricta en subida de archivos (MIME, extensión, contenido).
- Deshabilitar AXFR o restringirlo a servidores autorizados.
- Almacenar credenciales cifradas o utilizar un vault seguro.
- Revisar y restringir permisos en
sudoers. - Mover archivos sensibles fuera del directorio web.
- Implementar logging y monitoreo para detectar actividad sospechosa.