Grooti
Introducción
Sección titulada «Introducción»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:
- Reconocimiento – Identificación de servicios expuestos, rutas web y posibles puntos de entrada.
- Explotación – Obtención de acceso inicial mediante vulnerabilidad de autenticación o exposición indebida de archivos.
- Escalada de privilegios – Abuso de configuraciones inseguras (
cron,sudo, manipulación delPATH) para alcanzar privilegios deroot.
⚠️ Aviso: Todos los pasos fueron realizados en un entorno controlado de laboratorio. No ejecutes pruebas intrusivas fuera de entornos autorizados.
Información general
Sección titulada «Información general»| Atributo | Detalle |
|---|---|
| Nombre | Grooti |
| Autor | Grooti |
| Dificultad | Fácil |
| Fecha de creación | 26/07/2025 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»-
Descomprimimos el paquete descargado desde DockerLabs:
Ventana de terminal unzip Grooti.zip -
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.
Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización de trabajo
Sección titulada «1.1 Organización de trabajo»Para mantener una estructura clara, creamos un entorno de trabajo ordenado:
mkdir -p Grooti/{content,exploits,nmap,scripts}cd GrootiConsejo: Documentar y organizar cada hallazgo desde el inicio facilita el análisis y la redacción del informe final.

1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Realizamos un escaneo completo con Nmap para identificar los servicios activos:
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPortsLuego extraemos los puertos detectados mediante un script auxiliar (extractPorts) o manualmente:
extractPorts allPorts
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.
1.3 Enumeración web
Sección titulada «1.3 Enumeración web»Usamos Gobuster para descubrir directorios y archivos accesibles:
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
Rutas encontradas:
/index.php
/archives
/imagenes
/secret
Paso 2 — Explotación
Sección titulada «Paso 2 — Explotación»Dentro del archivo README.txt encontramos una contraseña en texto plano, que podría ser útil más adelante:

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

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

Entre las rutas descubiertas aparece /unprivate/secret, que nos presenta una interfaz web tipo “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.
2.1 Ataque de fuerza bruta (BurpSuite)
Sección titulada «2.1 Ataque de fuerza bruta (BurpSuite)»Interceptamos la petición con BurpSuite y realizamos un ataque tipo Sniper en el módulo Intruder, variando el valor numérico:

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

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.

2.2 Acceso al sistema
Sección titulada «2.2 Acceso al sistema»Con el diccionario en mano, utilizamos Hydra para probar las contraseñas contra el servicio SSH:

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

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»Listamos las tareas programadas del sistema:
ls -la /etc/cron.d/Encontramos un cron job sospechoso ejecutado por el usuario root, que invoca un script editable por usuarios comunes:

Editamos el script para inyectar una línea maliciosa que establezca el bit SUID en /bin/bash:
echo "chmod u+s /bin/bash" >> /var/backups/backup.shEsperamos un minuto hasta que el cron ejecute el script y, posteriormente, elevamos privilegios con:
bash -p¡Acceso root conseguido!

Conclusión y aprendizajes
Sección titulada «Conclusión y aprendizajes»Cadena de explotación (resumen)
Sección titulada «Cadena de explotación (resumen)»- Enumeración de servicios → HTTP, SSH y MySQL.
- Exposición de información sensible en archivos (
README.txty/secret). - Descarga de un ZIP protegido con contraseña y obtención de un diccionario.
- Ataque de fuerza bruta con Hydra → Acceso por SSH.
- Escalada de privilegios mediante cron job vulnerable →
root.
Fallos de seguridad identificados
Sección titulada «Fallos de seguridad identificados»- 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.
Recomendaciones (remediación)
Sección titulada «Recomendaciones (remediación)»- Restringir el acceso público a directorios como
/secreto/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.