Bounty Hacker – TryHackMe [WriteUp]

La máquina Bounty Hacker es una máquina de dificultad fácil de TryHackMe.

Resumen de conceptos trabajados:

Escaneo de Puertos
Anonymous login FTP
Extract user&credentials
Brute Force with Hydra
SSH exploitation
Privilege Escalation with tar

Al final del write up te cuento un resumen de toda la máquina.

Si es tu primera máquina en TryHackMe y no sabes cómo conectarte a la máquina del laboratorio, te recomiendo que visites este post donde te cuento paso a paso cómo introducirte en esta plataforma.

Cuando inicies siempre una máquina de TryHackMe, recuerda securizarte en la red, para ello te cuento cómo lo hago yo siguiendo estos sencillos pasos.

ESCANEO DE PUERTOS

Comenzamos primero viendo si la máquina está activa y podemos conectarnos a ella, y después continuamos con el descubrimiento de puertos para luego hacer un escaneo de los servicios y versiones que corren para esos puertos.

Resultado del escaneo: SO Linux, con los puertos 21 FTP, 22 SSH y 80 WEB abiertos.

ANONYMOUS LOGIN FTP

Empezamos por el puerto 21 FTP, ¿por qué? porque el escaneo nos dice que es posible hacer el login mediante el usuario y contraseña «anonymous».

Una vez dentro exploramos que hay dos ficheros .txt, que descargamos en nuestra máquina local mediante el comando «get», y después abrimos con «cat» en nuestra carpeta de la máquina:

Por otro lado, creo un fichero txt con nano para incluir todos los usuarios potenciales que encuentro en la web por el puerto 80, incluyendo el usuario que encontramos en el fichero task.txt:

Por si acaso encontrara más usuarios ocultos, hago fuzzing web sobre la IP pero no detecto nada interesante más allá de la parte de /images/ que solo aloja la img principal y nada más.

BRUTE FORCING CON HYDRA

Una vez tenemos el listado de contraseñas y el de usuarios, vamos a lanzar un Hydra contra el puerto 22 ssh para averiguar el usuario y contraseña vulnerable a la máquina.

Vemos el usuario lin y su contraseña.

SSH EXPLOITATION

Accedemos al puerto 22 ssh y podemos ver la user flag:

PRIVILEGE ESCALATION WITH TAR

Sin embargo no somos root, sino usuario lin, pero con el comando sudo -l vemos que lin tiene permisos para ejecutar /bin/tar como root, por lo que podemos abusar de esta capacidad para obtener una shell como usuario root.

sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh

Vamos a desglosar qué hace cada parte del comando:

1. sudo : Ejecuta el comando con permisos de superusuario (root), ya que el usuario lin tiene privilegios para ejecutar /bin/tar como root.

2. tar : Es el comando que se usa normalmente para crear, extraer o manipular archivos comprimidos.

3. -c : Indica que queremos crear un archivo tar. En este caso, no creamos realmente un archivo útil, sino que usamos tar solo como un medio para ejecutar código con privilegios elevados.

4. -f /dev/null /dev/null :

  • -f especifica el nombre del archivo tar a crear.
  • /dev/null es un archivo especial en Linux que descarta cualquier contenido escrito en él. Aquí, tar está intentando crear un archivo tar llamado /dev/null, pero en realidad no genera ningún archivo útil.

5. --checkpoint=1 : Hace que tar muestre un mensaje de verificación cada 1 archivo procesado. En este caso, el número 1 indica que se ejecutará la acción después del primer «checkpoint».

6. --checkpoint-action=exec=/bin/sh :

  • --checkpoint-action=exec=... permite ejecutar un comando arbitrario en cada checkpoint.
  • /bin/sh es un intérprete de comandos en Linux (similar a Bash).
  • Como tar se está ejecutando con privilegios de root, la shell que abre /bin/sh también se ejecuta como root, dándonos control total del sistema.

y si ejecutamos «whoami» somos root. Ahora basta con llegar a root.txt, para ello ejecutamos:

cat /root/root.txt
RESUMEN

Para resolver la máquina Bounty Hacker en TryHackMe, primero realizamos un escaneo con nmap y descubrimos que los puertos 21 (FTP), 22 (SSH) y 80 (HTTP) estaban abiertos.

Accedimos al FTP con usuario anónimo y descargamos archivos, donde encontramos una lista de posibles contraseñas (locks.txt). Luego, exploramos la web en busca de potenciales usuarios además de analizar el puerto 80 con gobuster por si hubieran directorios ocultos abiertos que nos pudieran revelar más información.

Con eso creamos dos ficheros txt de usuarios y contraseñas que utilizamos con Hydra para hacer un ataque de fuerza bruta en SSH y logramos acceder con las credenciales lin:RedDr4gonSynd1cat3.

Una vez dentro, encontramos la flag de usuario (user.txt) y verificamos con sudo -l que el usuario lin tenía permisos para ejecutar tar como root.
Para escalar privilegios, aprovechamos esta configuración ejecutando sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh, lo que nos dio acceso root.

Luego, navegamos al directorio /root/, donde encontramos root.txt, pero inicialmente no pudimos leerlo. Verificamos los permisos, confirmamos que era un archivo de texto y finalmente lo abrimos con cat /root/root.txt, obteniendo la flag final.

Otros posts relacionados