Inferno - TryHackMe

SUMMARY

Debemos encontrar dos banderas en la maquina Inferno. Donde a partir del escaneo de puertos de Nmap pude saber que hay un servicio HTTP,SSH, y muchos puertos abiertos. Donde Nmap no podía determinar si había un servicio ejecutándose en ellos. Luego, realice fuerza bruta de directorios con Wfuzz para encontrar recursos escondidos en el directorio raíz del servidor web, llegando a encontrar recurso escondido con un código HTTP 401, es decir, estaba protegido por un método de autenticación. Por lo tanto, debía proveer unas credenciales para acceder a él. Luego, utilice Hydra para realizar fuerza bruta sobre la autenticacion, llegando a encontrar unas credenciales que me permitió acceder al recurso. Donde accedí al portal de administración de Codiad, que presentaba la vulnerabilidad File Upload, permitiendo carga un archivo PHP que me genero una reverse Shell. Luego, para la escalada privilegios horizontal utilice unas credenciales encontradas en un archivo oculto del directorio home del usuario dante Luego, para la escalada privilegios vertical aproveche que podía ejecutar el archivo binario tee con los privilegios del usuario root, permitiéndome registrar un nuevo usuario en el archivo /etc/passwd del sistema destino, y que tuviese los privilegios del usuario root.

FASE RECONOCIMIENTO 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 Inferno. 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 Inferno.

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 Inferno. 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 -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:

  • Hay un servicio HTTP que se está levantado en el puerto 80, y el programa servidor HTTP que se está corriendo. Además, la versión del programa servidor.
  • Hay un servicio SSH que se está levantado en el puerto 22, y el programa servidor SSH que se está corriendo. Además, la versión del programa servidor SSH.
  • A través del script http-title.nse de Nmap se pudo capturar el valor de la etiqueta o elemento HTML title, que viene a ser el título de una página web almacenada en el servidor web.
  • Hay una gran cantidad de puertos que están abiertos en el sistema objetivo, pero se puede observar que Nmap no pude determinar con precisión el servicio que se esta ejecutando en la gran mayoría de los puertos abiertos. Por esta razón, vemos muchos signos de interrogación al lado del nombre del servicio y unknown.

Ahora solo analizaremos los puertos abiertos. Donde Nmap ha podido determinar el servicio que se está ejecutando. Por ello observaremos la página web desde nuestro navegador web.

Podemos observar una pagina web, que muestra un fragmento que pertenece al Canto XXXIII del Infierno, la primera sección de la Divina Comedia escrita por Dante Alighieri, y una imagen del infierno descrito en la Divina Comedia.

Ahora realizaremos una fuerza bruta de directorios con Wfuzz con el fin de encontrar recursos escondidos en el directorio raíz del servidor web.

Podemos observar que la herramienta llego a obtener un recurso escondido llamado inferno, pero cuyo código HTTP es 401. Esto quiere decir, que el recurso consta de un método de autenticación para acceder a él, es decir, debemos proveer unas credenciales. Esto lo podemos observar si intentamos acceder al recurso a través de nuestro navegador web.

Ahora utilizaremos Hydra con el fin de realizar fuerza bruta sobre la autenticación de este recurso con el fin de obtener unas credenciales validas. Además, estableceremos el parámetro -t igual a 64 para que la herramienta realice 64 solicitudes HTTP por segundo.

Podemos observar que la herramienta llego a encontrar unas credenciales validas para acceder al recurso.

Ahora accederemos al recurso a través de mi navegador web.

Podemos observar que el recurso viene a ser un formulario HTML o login. Además, utilizamos las mismas credenciales que encontramos anteriormente, para autenticarnos. Además, observamos que llegamos acceder al portal de administración de Codiad, que viene a ser un entorno de desarrollo integrado o IDE de código abierto, y que esta diseñado para ser utilizado en navegadores web. Además, proporciona herramientas para programar, editar, y administrar proyectos de desarrollo de software de manera colaborativa. Por esta razón, es que podemos observar que un proyecto llamado inferno.

FASE GANAR ACCESO O HACKING O EXPLOTACION

Ahora buscaremos en Internet una vulnerabilidad relacionada con el IDE Codiad.

Podemos observar que Codiad presenta la vulnerabilidad File Upload, que nos permite subir archivos en su directorio INF sin realizar una correcta sanitización o validación.

Ahora aprovecharemos esta vulnerabilidad para subir un archivo PHP que nos va a generar una reverse Shell cuando lo ejecutemos.

Podemos observar que se llego a subir nuestro archivo PHP.

Ahora accederemos a él a través de mi navegador web y especificando su ruta con el fin de hacer clic sobre el para que se ejecute su contenido, pero antes debemos poner en escuchar el puerto 1500 en nuestro sistema para que este esperando la conexión entrante de la reverse Shell.

Podemos observar que llegamos acceder al sistema destino siendo el usuario www-data.

FASE ESCALADA PRIVILEGIOS

Ahora debemos buscar un vector de escalada de privilegios con el fin de ser un usuario con privilegios más elevados. Para ello realizaremos una enumeración manual sobre los archivos del sistema destino con el fin de encontrar posibles vectores de escalada privilegios.

Podemos observar que se llego a encontrar un archivo oculto en el subdirectorio Downloads, que pertenece al directorio home del usuario local dante. Además, podemos observar que el contenido del archivo oculto esta codificado en base hexadecimal, para poder decodificarlo utilizaremos la herramienta en línea CyberChef.

Podemos observar el mensaje decodificado en un formato UTF-8. Además, podemos observar al final del mensaje decodifica unas credenciales del usuario dante.

Ahora accederemos al sistema destino mediante el servicio SSH y utilizando las posibles credenciales del usuario dante.

Podemos observar que llegamos a realizar una escalada de privilegios horizontal.

Ahora debemos buscar un vector de escalada de privilegios con el fin de ser un usuario con privilegios más elevados. Para ello enumeraremos los comandos y programas que puede ejecutar el usuario dante con los privilegios del usuario root.

Podemos observar que el usuario dante puede ejecutar el archivo binario ejecutable tee con los privilegios del superusuario root. Además, el archivo binario ejecutable tee es utilizado para escribir contenido en un archivo y a la vez observar el contenido de que vas agregando en pantalla. Aprovechando su funcionalidad, agregaremos una línea al archivo /etc/passwd con el fin de agregar un usuario con los privilegios de un superusuario root en el sistema destino.

Ahora crearemos un hash con una sal, que tendrá el valor de passwrod para mejorar la robustez de la contraseña, y la contraseña será password y el algoritmo de hash que utilizaremos será MD5.

Ahora agregaremos la siguiente línea en el archivo /etc/passwd del sistema destino utilizando el archivo binario tee con los privilegios del usuario root.

Podemos observar que logramos agregar exitosamente al nuevo usuario eduardo con privilegios del superusuario root en el archivo /etc/passwd.

Ahora nos autenticaremos en el sistema destino con las credenciales de nuestro usuario creado.

De esta manera llegamos realizamos una escalada de privilegios vertical en el sistema destino.

Ahora buscaremos la segunda bandera en el directorio root.