Rubiks
Introducción
Sección titulada «Introducción»Este documento presenta la resolución completa de la máquina Rubiks, desarrollada por Luisillo_o para la plataforma DockerLabs, clasificada con una dificultad Media.
El laboratorio expone un servidor web con funcionalidades administrativas ocultas, incluyendo una consola vulnerable que permite la ejecución remota de comandos mediante entradas codificadas.
A partir del compromiso inicial del servicio web, se obtiene acceso al sistema mediante claves privadas SSH expuestas, lo que permite una escalada de privilegios posterior gracias a un binario ejecutable como root con validación de entrada insegura.
La metodología seguida se estructura en las siguientes fases:
- Reconocimiento: enumeración de servicios y análisis del sitio web.
- Explotación: abuso de una consola web vulnerable para ejecutar comandos.
- Escalada de privilegios: explotación de un binario con permisos elevados mal implementado.
Todo el proceso se llevó a cabo dentro de un entorno controlado con fines estrictamente educativos.
Información Técnica
Sección titulada «Información Técnica»| Atributo | Valor |
|---|---|
| Nombre | Rubiks |
| Autor | Luisillo_o |
| Dificultad | Medio |
| Fecha | 01/09/2024 |
| Plataforma | DockerLabs |
| IP Objetivo | 172.17.0.2 |
Paso 0 — Despliegue y preparación
Sección titulada «Paso 0 — Despliegue y preparación»Se descomprime la máquina y se despliega utilizando el script proporcionado:
unzip Rubiks.zipsudo bash auto_deploy.sh Rubiks.tarUna vez iniciado el contenedor, se identifica la dirección IP asignada.
Se organiza el entorno de trabajo para mantener una estructura clara durante el análisis:
mkdir -p Rubiks/{content,exploits,nmap,scripts}cd RubiksPaso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Escaneo de puertos
Sección titulada «1.1 Escaneo de puertos»Se realiza un escaneo completo de puertos TCP para identificar servicios expuestos:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsServicios detectados:
- 22/tcp — SSH
- 80/tcp — HTTP
1.2 Enumeración web
Sección titulada «1.2 Enumeración web»Al acceder inicialmente al sitio web, este no carga correctamente y redirige al dominio:
rubikcube.dlPor lo tanto, se añade la entrada correspondiente al archivo /etc/hosts.
A continuación, se realiza fuzzing de rutas y archivos:
feroxbuster -u http://rubikcube.dl \ -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \ -x php,html,txt,js -t 100 -C 404Recursos relevantes identificados:
-
index.html Página principal con información genérica sobre cubos Rubik.
-
administration/myconsole.php Consola administrativa que permite ejecutar comandos codificados.
Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»Al acceder a myconsole.php, se observa que los comandos deben enviarse codificados. Tras probar diferentes esquemas, se determina que la consola utiliza Base32.
Se valida la ejecución remota enviando el comando id codificado:
echo id | base32El resultado se introduce en la consola, confirmando la ejecución correcta de comandos.
A partir de este punto, se realiza enumeración del sistema, incluyendo:
- Contenido de
/etc/passwd - Listado del directorio actual
Durante la enumeración se identifica una clave privada SSH (id_rsa) accesible desde el servidor web.
La clave se descarga, se ajustan permisos y se utiliza para acceder por SSH como el usuario luisillo:
ssh -i id_rsa luisillo@172.17.0.2Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De luisillo → root
Sección titulada «3.1 De luisillo → root»Se enumeran los permisos sudo del usuario:
sudo -lSe identifica que el usuario puede ejecutar el binario cube como root. Al revisar el binario, se observa que solicita un número como entrada sin ningún tipo de sanitización.
Aprovechando esta debilidad, se inyecta un comando para ejecutar una shell privilegiada:
sudo -u root /bin/cubeDigite el número: test[$(/bin/bash -p >&2)]Como resultado, se obtiene acceso directo como root.
Análisis de Vulnerabilidades
Sección titulada «Análisis de Vulnerabilidades»Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»| Vulnerabilidad | Severidad | Impacto |
|---|---|---|
| Consola administrativa expuesta sin autenticación | Crítica | Ejecución remota de comandos |
| Uso de codificación débil como mecanismo de seguridad | Alta | Bypass de controles de acceso |
| Exposición de clave privada SSH | Crítica | Compromiso de cuentas locales |
| Binario ejecutable como root sin validación de entrada | Crítica | Escalada total de privilegios |
| Falta de segregación de permisos en el sistema | Alta | Persistencia del atacante |
Recomendaciones de Mitigación
Sección titulada «Recomendaciones de Mitigación»- Proteger interfaces administrativas mediante autenticación robusta.
- No utilizar codificaciones como mecanismo de seguridad.
- Evitar la exposición de claves privadas en servidores web.
- Validar estrictamente toda entrada proporcionada por el usuario.
- Auditar binarios con permisos elevados y aplicar el principio de mínimo privilegio.