Lian_Yu - TryHackMe
SUMMARY
Debemos encontrar dos banderas. Donde a partir de un escaneo de puertos pude saber que hay un servicio Web, SSH, FTP, RPCbind. Además, gracias a un script de Nmap, logre determinar que hay un pagina web almacenada en el servidor web. Luego, a través de diversos mini retos que consistían en: observar el código fuente y modificar elementos HTML de páginas web, decodificar mensajes cifrados, realizar fuerza bruta directorios desde ciertas rutas, al final encontré unas credenciales para acceder al servidor FTP y extraer un archivo y dos imágenes. Donde modifiqué los números mágicos de una imagen, logrando encontrar unas credenciales para acceder al sistema destino mediante el servicio SSH. Luego, para la escalada de privilegio vertical, aproveche que el usuario local podía ejecutar el comando con los privilegios del usuario root, para generar una nueva instancia de Shell con los privilegios de root.
FASE RECONOCMIENTO ACTIVO
En este caso debemos acceder al sistema destino y obtener las banderas. Para ello empezaremos utilizando el comando openvpn con el fin de establecer una conexión VPN con la red virtual dónde está la máquina Lian_Yu. Para ello utilizaremos el archivo de configuración, que lo podemos descargar en la plataforma de Tryhackme, que puede incluir información como la dirección del servidor VPN, los certificados y claves de seguridad, la configuración de encriptación, etc.
Luego de que se establece la conexión VPN se crea una interfaz virtual de red en nuestra máquina. Donde se enruta todo el tráfico de red a través de esa interfaz.
Además, la plataforma de Tryhackme nos muestra la dirección IP de la máquina Lian_Yu.
FASE ESCANEO Y ENUMERACION
Luego pasaremos a la fase de Escaneo y Enumeración con el fin de poder escanear los puertos del nodo. Además, obtendremos los servicios que se han levantado en los puertos abiertos, las versiones de los servicios, y el sistema operativo de la máquina Lian_Yu. Para ello utilizaremos Nmap
. Donde le pasaremos los siguientes parámetros:
- El parámetro -sC o –script=”default” para utilizar todos los scripts de la categoría default con el fin de realizar un escaneo y detección de los puertos de manera avanzada.
- El parámetros -sV con el fin de conocer las versiones de los servicios levantados en los puertos abiertos.
- El parámetro -n para evitar la resolución DNS, y el parámetro –max-rate para indicarle el número máximo de paquetes por segundo que va a utilizar Nmap para el escaneo con el fin de evitar sobrecargar la red con el tráfico generado por la herramienta.
- El parámetro -Pn para evitar que Nmap, que realice ningún tipo de sondeo o ping hacia el sistema destino con el fin de determinar si el host está vivo o activo, y realice el escaneo de puertos directamente.
- El parámetro -p- para realizar un escaneo de los 65535 puertos del nodo y el parámetro –open con el fin de que nos muestre información solo de los puertos abiertos.
Los resultados que obtuvimos del escaneo vienen a ser:
- Un programa servidor web Apache levantado en el puerto 80. Además, gracias al script http-tittle obtuvimos el valor de la etiqueta title de una página web alojada en el directorio raíz del servidor web.
- Un programa servidor SSH levantado en el puerto 22.
- Un programa servidor FTP levantado en el puerto 21.
- El servicio RPCbind levantado en el puerto 111 para asignar números de puertos a los servicios y programas en el sistema que utilizan el protocolo RPC.
Ahora accederemos a la página web alojada en el directorio raíz del servidor web a través de mi navegador web.
Podemos observar que se trata de una pagina web de inicio que nos dice que la maquina virtual esta orientado en la primera temporada de la serie de Arrowverse.
Ahora realizaremos fuerza bruta de directorios sobre el directorio raíz del servidor web con Gobuster.
Podemos observar que la herramienta llego a encontrar un recurso escondido.
Ahora accederemos a él a través de mi navegador web.
Podemos observar una página web cuyo mensaje nos incita a seguir realizando fuerza bruta de directorios desde este recurso. Además, en el mensaje nos menciona de una palabra clave, pero no podemos apreciar su valor y si revisamos el código fuente de la página, nos damos cuenta de que la etiqueta HTML <p>
, que contiene el valor, tiene la propiedad CSS style con el color igual a blanco. Por esta razón utilizamos la herramienta Inspector, integrada en el navegador web, para cambiar el rolo a rojo y poder observar su valor en la página web.
Ahora realizaremos fuerza bruta de directorios desde la ruta del recurso con Gobuster.
Podemos observar que la herramienta logro encontrar un recurso escondido.
Ahora accederemos a él a través de mi navegador web.
Podemos observar una pagina web con un video insertado que esta caída. Además, si observamos el código fuente de la página web, nos topamos con un comentario que contiene una extensión de un archivo. Además, el comentario nos incita a seguir realizando fuerza bruta de directorios con el fin de encontrar algún archivo con la extensión. ticket, pero desde esta nueva ruta.
Podemos observar que la herramienta logro encontrar el archivo con la extensión ticket.
Ahora accederemos a él a través de mi navegador web.
Podemos observar que el archivo contiene una clase de clave pero que esta codiciada.
Ahora utilizaremos esta herramienta en línea (https://www.dcode.fr/cipher-identifier) para saber el tipo de codificación que está utilizando.
Podemos observar que el tipo de cifrado mas probable que este utilizado la palabra es Base58.
Ahora decodificaremos la palabra.
Podemos observar que el string decodificado contiene la palabra Hood que viene a ser el nombre del personaje principal de la serie en la que este ambiente la máquina virtual.
Hasta ahora tenemos dos palabras claves que vienen a ser vigilantey !#th3h00d. Posiblemente vienen a ser credenciales de inicio de sesión en el servicio SSH o FTP. Ahora intentaremos autenticarnos al servidor FTP con estas posibles credenciales.
Podemos observar que las palabras claves encontradas anteriormente eran credenciales de inicio de sesión del servicio FTP. Además, los recursos compartidos por el servidor FTP parecen ser archivos del directorio home de algún usuario local en el sistema destino. Pero hay un archivo oculto llamado. other_users que es bastante atípico en un directorio home de un usuario local.
Ahora descargaremos este archivo oculto con las imágenes.
Podemos observar que el contenido de este archivo viene a ser como una breve biografía de Slade Wilson y posiblemente puede ser un username de un usuario local en el sistema destino.
Podemos observar que obtenemos mensajes de error cuando queremos observar la imagen y cuando utilizamos el comando file sobre la imagen no obtenemos el formato PNG que debería tener. Por esta razón observaremos los números mágicos del archivo que vienen a ser las primeras cadenas bytes hexadecimales que aparecen en su contenido y que determinan el tipo de contenido o el formato del archivo.
Podemos observar que los números mágicos del archivo no corresponden a una imagen PNG por lo que los comandos no pueden determinar el formato de una imagen PNG.
Ahora modificaremos los números mágicos del archivo para que puedan ser interpretados correctamente por los comandos y podamos observar la imagen.
Esta imagen parece contener otra palabra clave que es passowrd.
En estas dos imágenes restantes, la imagen llamada aa parece ser bastante atípica. Por esta razón utilizaremos steghide, que viene a ser una herramienta de esteganografía, para extraer posibles datos ocultos de la imagen
Podemos observar que la imagen estaba conteniendo un archivo zip y que estaba protegida por una palabra clave que era password justo la que encontramos anteriormente. Además, cuando descomprimirnos el archivo zip nos encontramos con un archivo llamado passwd que contiene información sobre la trama de la serie, y nos encontramos con un archivo llamado shado que contiene una palaba que puede ser una credencial o username.
Ahora con el posible username slade y la posible contraseña M3tahuamn intentaremos acceder al sistema destino mediante el servicio SSH.
Podemos observar que logramos acceder al sistema destino mediante nuestras suposiciones. Además, logramos encontrar la primera bandera.
FASE ESCALADA PRIVILEGIOS
Ahora buscaremos un vector de escalada de privilegios.
Podemos observar que podemos ejecutar el comando pkexec con los privilegios de root sin proveer sus credenciales de inicio de sesión. Además, debemos saber que en si el comando te permite ejecutar comandos privilegios elevados. Por lo tanto ejecutaremos una nueva instancia de sehl pero con los privilegios de root.
Podemos observar que llegamos a realizar la escalada privilegio vertical. Además, obtuvimos la última bandera.