Recent Posts

Break Out The Cage - TryHackMe

Debemos encontrar 2 banderas. Primero, a partir de un escaneo de puertos pude saber que un servidor FTP permitía conexiones anónimas,logrando enumerar un recurso compartido que contenía un mensaje codificado con Base64 y Vigenere. Además, para conocer la clave utilizada en el cifrado Vigenere, observe el espectrograma de un archivo de audio, que fue encontrado a partir de una fuerza bruta de directorios desde el directorio raíz del servidor web. Luego, de decodificar y descifrar el mensaje, logre saber el password de un usuario local del sistema destino. Luego, en la escalada de privilegio horizontal, aproveche que un script Python era ejecutado de manera periódica y automatizada con los privilegios de un usuario local, logrando realizar un Command Injection para ejecutar una reverse Shell con los privilegios de dicho usuario. Luego, en la escalada de privilegios vertical, aproveche que el usuario pertenencia al grupo secundario lxd para ejecutar un contenedor donde se ejecuta una Shell Bash con privilegio...

Jack - TryHackMe

Debemos encontrar 2 banderas. Primero, a partir de un escaneo de puertos pude saber que un servidor web se estaba ejecutando en el puerto 80 y que alojaba un sitio web desarrollado con el CMS WordPress. Luego, utilice WPScan para enumerar plugins, themes, y usernames del sitio web, logrando encontrar tres usernames válidos para acceder al portal de gestión CMS. Luego, realice un ataque de fuerza bruta de contraseñas contra el login del CMS logrando encontrar las credenciales de un usuario que no tenia el rol de Administrador, pero debido a la vulnerabilidad asociada con la versión del Plugin User Role Editor es que pude asignarle el rol de Administrador logrando modificar el código fuente de un archivo PHP de uno de los plugins utilizados por el sitio web con el fin ejecutara una reverse Shell. Luego, en la escalada privilegio horizontal, logre encontrar una clave privada SSH del usuario local Jack. Luego, en la escalada vertical, logre asignar el bit SUID al archivo binario bash mediante la vulnerabilidad...

Python Playground - TryHackMe

Debemos encontrar 3 banderas. Primero, a partir de un escaneo de puertos pude saber que un servidor web se estaba ejecutando en el puerto 80 y que se utilizaba la tecnología Node.js y Express para desplegar una aplicación web. Luego, utilice fuerza bruta de directorios en el directorio raíz del servidor, logrando obtener un login exclusivo para el admin. Además, aprovechando que la lógica de este login se había implementado en un script JavaScript, cree un script JavaScript para realizar un proceso inverso al implementado en la lógica del login para codificar la contraseña, logrando obtener omitir la autenticación, y en el panel de gestión había una funcionalidad que te permitía ejecutar código Python pero se había implementado un blacklist con ciertos comandos, aun así se logro evitar el blacklist logrando ejecutar una reverse Shell, logrando acceder a un contenedor Docker, pero para acceder al sistema anfitrión se reutilizo las contraseñas usadas en el login mediante el servicio SSH. Luego, en la escalad...

Temple - TryHackMe

Debemos encontrar 2 banderas. Primero, a partir de un escaneo de puertos pude saber que había servidor web del que viene integrado enFlask, y que almacena una aplicación web que constaba de un login que emitía mensajes de error genéricos. Luego, realizando fuerza de directorios desde el directorio raíz del servidor, encontramos un registro, que nos permitió registrar una cuenta y acceder al panel de gestion de la aplicación web donde me di cuenta que era vulnerable a SSTI debido al parámetro username del registro, logrando ejecutar comandos en el sistema operativo de manera remota, pero el registro tenía un blacklist sobre el username de varios caracteres que logre evitar con un payload encontrado en un repositorio Github y con algunas modificaciones extra. Además, documente un método alternativo para evitar el blaclist del registro mediante la creación de una cookie de sesión con flask-unsign. Luego, en la escalada de privilegio, aproveche que el servicio logstash era ejecutado con los privilegios de root...

Intranet - TryHackMe

Primero realice un escaneo de puertos, logrando saber que un servidor Apache, y uno para desarrollo en Flask, se estaban ejecutando. Además, este último servidor alojaba una aplicación web que constaba de una autenticación de dos factores, logrando autenticarme en el factor a partir de una enumeración de usernames y un ataque de fuerza bruta de contraseñas utilizando un wordlist personalizado y Hydra. Luego, el segundo factor constaba de un código de verificación de 4 dígitos que logre encontrarlo con fuerza bruta mediante ffuf o un script Python. Luego, en el portal de gestión de la aplicación web me encontré con un parámetro vulnerable a LFI, logrando observar el código fuente de la aplicación web, y logrando saber que utilizaba una clave secreté para firmar las cookies de sesión, logrando encontrar la clave secreta para crear una cookie de sesión con los datos de admin y firmado. Luego, en una funcionalidad administrativa, me encontré un parámetro vulnerable a Command Injection, logrando ejecutar una re...

That’s The Ticket - TryHackMe

Debemos lograr autenticarnos en un login con las credenciales del administrador. Para ello primero me creo una cuenta mediante el registro de la aplicación, luego accedo al portal de gestión de la aplicación donde puedo crear un ticket. Además, en los tickets podría agregar un mensaje.Además, me di cuenta de que la aplicación web no realizaba una sanitización sobre el mensaje al momento de incrustarlo en su respuesta, por lo que intenté capturar las cookies de sesión del administrador y enviarlas a un dominio de mi control, pero se había implementado la flag HttpOnly.Además, me di cuenta de que había un firewall que filtraba las solicitudes realizadas hacia sistemas externos. Luego, utilizando una herramienta que registraba consultas DNS y solicitudes HTTP realizadas hacia cierto dominio, logre obtener el email del administrador a traves de una consulta DNS registrada y realizada por el navegador web del administrador debido a un payload XSS ingresado en el ticket.Luego, utilice Hydra para encontrar su con...

CyberHeroes - TryHackMe

En este caso debemos omitir el mecanismo de autenticación de un login de un sitio web para obtener la flag. Primero, realicé un escaneo de puertos con Nmap para saber el número de puerto donde se esta ejecutando el servidor web que aloja el sitio web, Luego, accedí al sitio web para encontrar la ruta del login, que constaba de un formulario HTML con dos parámetros asociados al username y password. Luego, revise el código fuente de la pagina web donde estaba el login, dándome cuenta que la lógica de este mecanismo de autenticación se basaba en un conjunto de comandos dentro de una función JavaScript, que podía ser observaba en el mismo código fuente de la pagina web, Luego, analizando el código de esta función, pude obtener la composición de los username y password correcto, logrando omitir fácilmente la autenticación sin la necesidad de realizar fuerza bruta.

Classic Passwd - TryHackMe

Debemos analizar un archivo binario ejecutable LSB y obtener el username que nos solicitan al momento de que lo ejecutamos. Además, al ser LSB, debemos saber que los bytes se almacenaran en la memoria siguiendo el formato litte-endian. Luego, utilizo la herramienta Ghidra para realizar ingeniería inversa y poder obtener el código fuente del binario en C. Observando que se utiliza la función strcmp para comparar byte a byte, el username que ingresamos con los bytes almacenados desde una dirección de memoria que le corresponde a una variable predefinida en el programa. Además, debemos saber que la comparación se terminara cuando se tope con un byte nulo. Luego, si ambos strings son iguales, la función generará el valor entero 0, que cumplirá con la condición de un if, generando la bandera. Pero debemos tener en cuenta que se han definido otras variables cuyos bytes se han almacenado en direcciones de memoria consecutivas, por lo que debemos tener en cuenta estos bytes en el username que ingresaremos.

Different CTF - TryHackMe

Debemos encontrar dos banderas. Primero, a partir de un escaneo de puertos pude saber que un servidor web alojado un sitio web creado WordPress. Luego, realicé fuerza bruta de directorios con el fin de encontrar recursos escondidos en el directorio raíz del sitio web, encontrando un wordlist y una imagen, luego extraje un archivo de texto oculto en la imagen, pero antes utilicé stegcracker para encontrar la palabra clave requerida. Luego, encontré unas credenciales FTP de un usuario en el archivo de texto, logrando acceder a los recursos compartidos, que consista en el directorio raíz de otro sitio web creado con el mismo CMS, logrando cargar un archivo PHP en los recursos compartidos y que nos genere una reverse Shell cuando lo observemos a traves del navegador web. Luego, en la escalada privilegio vertical, utilice sucrack para crackear la contraseña de un usuario local, luego analice el código fuente de un archivo binario con diversas tools de ingeniería inversa, logrando obtener el password de root.

0x41haz - TryHackMe

En este caso debemos analizar un archivo binario ejecutable ELF y obtener el passwod que nos solicitan al momento de que lo ejecutamos. Pero antes nos damos cuenta de que si utilizamos el comando file sobre el archivo con el fin de saber el tipo y formato del archivo, nos toparemos con un mensaje de error, y esto es debido a que el sexto byte ha sido alterado. Además, este sexto byte va a definir la endianidad del archivo ELF de 64 bits. Una vez corregido el byte, podremos utilizar Ghidra para poder observar y analizar el código fuente del archivo binario, logrando saber que la contraseña solicitada debe tener 13 caracteres. Además, logramos saber que el programa realiza una comparación de los caracteres ingresados en la contraseña con otros caracteres de otras variables predefinidas en el programa, pero debemos tener en cuenta que los bytes de las variables predefinida se almacenan en la memoria en el formato little-endian. Para comprobar esto podemos utilizar el marco radaere2 en su modo depuración.