TryHackMe Easy Target IP: 10.128.152.198

Máquina Brooklyn Nine-Nine

Resolución paso a paso de la máquina Brooklyn Nine-Nine de TryHackMe, analizando el servicio FTP anónimo, extrayendo credenciales mediante esteganografía y fuerza bruta por SSH, y escalando privilegios a root a través de privilegios sudo en less.

#Linux#Steganography#Stegseek#FTP#Hydra#SSH#Sudo#GTFOBins#Less

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
Escaneo inicial de puertos de Nmap
Resultados del escaneo de Nmap sobre el objetivo 10.128.152.198

Resultados Clave de Nmap

El escaneo revela 3 puertos abiertos principales:

  • Puerto 21 (FTP): Servidor vsFTPd 3.0.3 con inicio de sesión anónimo permitido (Anonymous FTP login allowed). Contiene un archivo llamado note_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:

Página de inicio del sitio web
Página de inicio web mostrando una imagen del elenco de Brooklyn Nine-Nine

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/):

Código fuente del sitio web
Comentario oculto en el HTML indicando una posible pista de esteganografía

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
Escaneo de directorios con Gobuster
Resultados del escaneo de directorios, sin rutas dinámicas o paneles adicionales

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
Cracking de esteganografía con Stegseek
Stegseek encuentra la contraseña "admin" y extrae el archivo note.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
Lectura del archivo note.txt extraído
Lectura de las credenciales del usuario holt

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
Conexión FTP anónima
Descarga de la nota note_to_jake.txt desde el servidor FTP

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
Ataque de fuerza bruta con Hydra
Hydra encuentra la contraseña del usuario jake

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
Conexión SSH exitosa como jake
Inicio de sesión SSH en la máquina víctima

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
Lectura de user.txt
Lectura exitosa de la flag de usuario en el directorio personal de holt

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
Comprobación de permisos sudo
Permisos de sudo para jake, revelando el binario less sin contraseña

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