Wgel - TryHackMe

SUMMARY

Debemos encontrar dos banderas en la maquina Wgel. Donde a partir del escaneo de puertos de Nmap pude saber que hay un servicio HTTP y SSH. Además, a partir de un script de Nmap pude saber que había una página web de inicio que viene por defecto en la instalación del servidor Apache. Luego, analizando el código fuente de la página web nos encontramos con el username del desarrollador web. Luego, realice fuerza bruta de directorios con Wfuzz sobre el directorio raíz del servidor web encontrando un directorio de un sitio web en desarrollo. Luego realice fuerza bruta de directorios sobre el directorio del sitio web, encontrando una clave privada SSH, que le corresponde al desarrollador web. Luego, para la escalada de privilegios vertical utilice el comando wget, que lo podía ejecutar con los privilegios del usuario root, con el fin de modificar la línea del usuario root en el archivo /etc/shadow del sistema destino.

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 Ignite VM. 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 Wgel.

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

  • Un servicio HTTP o web levantado en el puerto 80, y el programa servidor web que está corriendo, y la versión del programa servidor. Además, a partir del script http-title, se pudo saber que hay una pagina web cuya etiqueta HTML title toma el valor de Apache2 Ubuntu Default Page: It works. Por lo tanto, viene a ser la pagina web que viene por defecto en la instalación del programa servidor Apache.
  • Un servicio SSH levantado en el puerto 22, y el programa servidor web que esta corriendo, y la versión del programa servidor.

Ahora accederemos a la página web desde mi navegador web.

Podemos observar que, si analizamos el código fuente de la página web, nos encontramos un comentario realizado probablemente por el administrador del sistema destino hacia el desarrollador web, refiriéndose a un sitio web.

Ahora realizamos fuerza bruta de directorios sobre el directorio raíz del servidor web con el fin de encontrar recursos escondidos relacionados con el sitio web en desarrollo.

Podemos observar que la herramienta llego a encontrar un recurso escondido.

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

Podemos observar que se trata del sitio web que esta aun desarrollo, y le falta configurar muchas de sus funcionalidades

Ahora realizaremos fuerza bruta de directorios sobre el directorio raíz del sitio web con el fin de encontrar algún recurso escondido útil.

Podemos observar que la herramienta llego a encontrar el recurso .ssh, que comúnmente viene a ser un directorio oculto que almacena clave privada y publica SSH con el fin de que un usuario pueda autenticarse en un sistema a través de su clave privada SSH.

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

Podemos observar que el recurso .ssh, se trata de un directory list, que contiene una clave privada SSH.

FASE GANAR ACCESSO O EXPLOTACION O HACKING

Ahora supondremos que esta clave privada SSH ha sido creado por el administrador del sistema destino con el fin de que el desarrollador web o Jessie pueda autenticarse al sistema destino mediante la clave privada SSH. A partir de esta suposición, nos autenticaremos al sistema destino con el username Jessie, mediante el servicio SSH y la clave privada SSH, pero debemos asignarle el permiso 600 al archivo que va a contener la clave privada SSH.

Podemos observar que nuestra suposición estuvo en lo correcto.

De esta manera obtenemos acceso al sistema destino siendo el usuario Jessie y aprovechando la exposición de datos sensibles,

FASE ESCALADA PRIVILEGIOS

Ahora debemos buscar un vector de escalada privilegios. Para ello enumeraremos los comandos y programas que puede ejecutar el usuario jessie con los privilegios del usuario root

Podemos observar que el usuario jessie puede ejecutar el archivo binario ejecutable wget con los privilegios del superusuario root. Aprovecharemos esto para utilizar el parámetro –post-files del comando wget con el fin de cargar el archivo /etc/shadow en nuestro sistema a través de una solicitud POST HTTP, pero antes debemos habilitar el puerto 1500 para que este en modo listening y aceptando la conexión entrante de nuestra solicitud.

Ahora copiaremos el contenido del archivo /etc/shadow a un archivo de mi sistema, llamado shadow.txt. Además, modificaremos la línea del usuario root en el archivo shadow.txt con el fin de agregar un hash SHA512, que crearemos utilizando el comando openssl.

Ahora levantaremos un servidor web local con el modulo http.server de Python, con el fin de descargar el archivo shadow.txt en el sistema comprometido mediante el comando wget. Además, utilizaremos el parámetro -O para especificar que se descargue nuestro archivo con el nombre /etc/shadow con el fin de que reemplace el archivo original /etc/shadow del sistema destino.

Podemos observar que se llegó a reemplazar exitosamente el archivo /etc/shadow.

Ahora intentaremos autenticarnos en el sistema destino siendo el usuario root, y sabiendo que la contraseña que le establecimos en /etc/shadow es easy.

Podemos observar que llegamos acceder al sistema destino siendo el usuario root a través de la reutilización de credenciales.

Ahora buscaremos las dos banderas en los archivos: user_flag.txt y root.txt