Fortress - TryHackMe
Primero a partir del escaneo de puertos de Nmap pude saber qué servicios se ejecutaban en los puertos abiertos. Luego, enumerando los recursos compartidos del servidor FTP, pude obtener un bytecode que había sido compilado con Python 2.7, logrando decompilarlo con uncompyle2, y obteniendo el script Python que implementaba un servidor que escuchaba conexiones en el puerto 5752, y que tenía un método de autenticación, logrando omitirlo y obtener la ruta de dos recursos. Uno de ellos era un script PHP, donde genere la colisión hash SHA-1 con el fin de obtener la ruta de un recurso que contenía la clave privada SSH del usuario h4rdy. Luego, omití la shell rbash asignado al usuario h4rdy, y en la escalada horizontal, aproveché que h4rdy podía ejecutar el comando cat con los privilegios de j4x0n con el fin de obtener su clave privada SSH. Luego, en la escalada vertical, encontré la credencial de j4x0n en un script en Bash, pudiendo ejecutar cualquier comando con los privilegios de root mediante sudo.
En este caso debemos encontrar dos banderas ubicadas en la maquina Athenav1.9. Donde a partir del escaneo de puertos de Nmap pude saber que el servicio SMB se está ejecutando en los puertos 139 y 445. Luego, enumerando los recursos compartidos del servidor Samba, pude saber que hay un archivo de texto compartido donde encontré la ruta de un endpoint de una API que ofrece una funcionalidad similar al comando ping. Luego, aprovechando que el endpoint era vulnerable a Command Injection, logre inyectar un comando que genere un reverse Shell. Luego, para la escalada privilegio horizontal, logre encontrar un script en Bash que era ejecutado de manera automatizada y periódica con los privilegios del usuario athena, logrando modificar su contenido y realizar una reverse Shell. Luego, en la escalada vertical, aproveche que athena podía cargar un módulo kernel, que viene a ser un LKM rootkit, con los privilegios del usuario root, logrando analizar su código fuente con Ghidra.
Debemos autenticarnos en el login de un sitio web siendo carlos. Luego, me doy cuenta de que el sitio web consta con la funcionalidad de Resetear Contraseña. Además, su logica es primero ingresar un username o correo electrónico de un usuario valido en un formulario, luego le llega un correo electrónico al usuario ingresado, con una URL que tiene un token asociado a su cuenta, y al darle clic a la URL, eres redireccionado a una página web para resetear tu contraseña. La vulnerabilidad de la lógica de esta funcionalidad radica en que la URL es generada a partir del valor de la cabecera Host de la solicitud POST del primero formulario. Por lo que podemos usar la cabecera X-Forwarded-Host en la solicitud para alterar el valor de la cabecera Host, y de esa manera el sitio web enviara un correo electronico con una URL fraudulenta a carlos. Luego, cuando carlos haga clic en la URL, podremos observar el token en el registro de acceso de nuestro servidor web.