Ir al contenido

Grooti

En este artículo documentamos la resolución completa de la máquina virtual Grooti, creada por Grooti y catalogada como fácil en la plataforma DockerLabs. El objetivo es ofrecer una guía reproducible y didáctica, explicando qué se hizo, por qué se hizo y cómo identificar patrones similares en otros entornos.

El proceso se divide en tres fases principales:

  1. Reconocimiento – Identificación de servicios expuestos, rutas web y posibles puntos de entrada.
  2. Explotación – Obtención de acceso inicial mediante vulnerabilidad de autenticación o exposición indebida de archivos.
  3. Escalada de privilegios – Abuso de configuraciones inseguras (cron, sudo, manipulación del PATH) para alcanzar privilegios de root.

⚠️ Aviso: Todos los pasos fueron realizados en un entorno controlado de laboratorio. No ejecutes pruebas intrusivas fuera de entornos autorizados.


AtributoDetalle
NombreGrooti
AutorGrooti
DificultadFácil
Fecha de creación26/07/2025
PlataformaDockerLabs

  1. Descomprimimos el paquete descargado desde DockerLabs:

    Ventana de terminal
    unzip Grooti.zip
  2. Desplegamos el contenedor con el script incluido:

    Ventana de terminal
    sudo bash auto_deploy.sh Grooti.tar

El script levanta automáticamente un contenedor Docker con los servicios necesarios y muestra la IP asignada al finalizar. Guarda esta dirección, ya que la utilizaremos en los siguientes pasos.


Para mantener una estructura clara, creamos un entorno de trabajo ordenado:

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

Consejo: Documentar y organizar cada hallazgo desde el inicio facilita el análisis y la redacción del informe final.

IP asignada


Realizamos un escaneo completo con Nmap para identificar los servicios activos:

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

Luego extraemos los puertos detectados mediante un script auxiliar (extractPorts) o manualmente:

Ventana de terminal
extractPorts allPorts

Puertos abiertos

Servicios identificados:

  • 22/tcp → SSH
  • 80/tcp → HTTP
  • 3306/tcp → MySQL

El servicio web parece ser el vector más prometedor para iniciar la explotación.


Usamos Gobuster para descubrir directorios y archivos accesibles:

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 -o gobuster.txt

Gobuster

Rutas encontradas:

  • /index.php Index
  • /archives archivos
  • /imagenes imagenes directory
  • /secret secret

Dentro del archivo README.txt encontramos una contraseña en texto plano, que podría ser útil más adelante:

password

Revisando el directorio /secret, descargamos un archivo con instrucciones que contenía información adicional relevante:

instructions

Con esas credenciales, nos conectamos al servicio MySQL, donde identificamos varias bases de datos y tablas:

databases table

Entre las rutas descubiertas aparece /unprivate/secret, que nos presenta una interfaz web tipo “terminal”:

grooti terminal

El sitio permite ingresar valores, generando un archivo password1.txt con el contenido introducido. Esto sugiere que el segundo valor (numérico) podría validar el acceso, así que lo atacamos mediante fuerza bruta.


Interceptamos la petición con BurpSuite y realizamos un ataque tipo Sniper en el módulo Intruder, variando el valor numérico:

snipper attack

Entre las respuestas, destaca la solicitud con el número 16, por su tamaño de respuesta anómalo:

burp 16 petition

Al ejecutarla manualmente, el sitio nos descarga un archivo ZIP protegido por contraseña.

Utilizamos la contraseña encontrada en README.txt para descomprimirlo, obteniendo un diccionario de contraseñas potenciales.

dictionary


Con el diccionario en mano, utilizamos Hydra para probar las contraseñas contra el servicio SSH:

hydra

Hydra logra encontrar las credenciales correctas, permitiéndonos acceder al sistema vía SSH:

ssh


Listamos las tareas programadas del sistema:

Ventana de terminal
ls -la /etc/cron.d/

Encontramos un cron job sospechoso ejecutado por el usuario root, que invoca un script editable por usuarios comunes:

malicious.sh

Editamos el script para inyectar una línea maliciosa que establezca el bit SUID en /bin/bash:

Ventana de terminal
echo "chmod u+s /bin/bash" >> /var/backups/backup.sh

Esperamos un minuto hasta que el cron ejecute el script y, posteriormente, elevamos privilegios con:

Ventana de terminal
bash -p

¡Acceso root conseguido!

root


  1. Enumeración de servicios → HTTP, SSH y MySQL.
  2. Exposición de información sensible en archivos (README.txt y /secret).
  3. Descarga de un ZIP protegido con contraseña y obtención de un diccionario.
  4. Ataque de fuerza bruta con Hydra → Acceso por SSH.
  5. Escalada de privilegios mediante cron job vulnerable → root.

  • Archivos con información sensible accesibles públicamente.
  • ZIP protegido con contraseña débil (expuesta en texto plano).
  • Credenciales reutilizadas entre servicios.
  • Script de cron ejecutado por root sin control de permisos.

  • Restringir el acceso público a directorios como /secret o /archives.
  • Evitar contraseñas visibles o reutilizadas en archivos del servidor.
  • Configurar permisos seguros en scripts ejecutados por cron.
  • Implementar políticas de contraseñas robustas y rotación periódica.
  • Auditar periódicamente los permisos de archivos ejecutables y cron jobs.