VulnNet - TryHackMe

SUMMARY

Debemos encontrar 2 banderas. Primero, a partir de un escaneo de puertos pude saber que había un servidor web que alojaba un sitio web cuyas funcionalidades y formularios no estaban operativos. Luego, analizando los scripts JavaScript que se cargan en el sitio web, encontramos el dominio del sitio web y un subdominio cuyo directorio raíz está siendo protegido por un login. Además, se logró encontrar un parámetro GET vulnerable a “LFI” que me permitió observar el contenido del archivo “000-default.conf” que contiene la ruta del archivo “.htpasswd”, logrando obtener las credenciales para acceder al directorio raíz del subdominio en el archivo “.htpasswd”. Luego, me encontré con la aplicación “CLIPBUCKET” con la versión 4.0 vulnerable a “File Upload”, logrando cargar un archivo PHP en el servidor web destino con el fin de obtener una reverse shell. Para la escalada de privilegio, encontré una clave privada SSH encriptada (cuyo passphrase puedo ser encontrada con “John The Ripper”) del usuario “server-management” . En la escalada vertical, aproveche la vulnerabilidad “tar wilcard injection” en el comando de una tarea cron ejecutada por root.

FASE RECONOCIMIENTO ACTIVO

En este caso debemos acceder al sistema destino y obtener las banderas. Primero, empezaremos utilizando el comando openvpn y el archivo de configuración OpenVPN con el fin de establecer una conexión VPN y poder acceder a los laboratorios donde están las máquinas virtuales. Además, la plataforma de Tryhackme nos muestra la dirección IP de la máquina VulnNet.

FASE ESCANEO Y ENUMERACION

Ahora pasaremos a la fase de Escaneo y Enumeración con el fin de poder escanear los puertos del sistema destino. Además, obtendremos los servicios que se han levantado en los puertos abiertos, las versiones de los servicios.

Los resultados que obtenemos son:

  • Un programa servidor SSH que se ejecuta en el puerto 22.
  • Un programa servidor HTTP que se ejecuta en el puerto 80. Ademas, podemos observar la etiqueta “title” de una pagina web, por lo que podemos deducir que hay un sitio web alojado en el servidor web.

Ahora accederemos al sitio web a traves de mi navegador web.

Podemos observar que varios de los formularios del sitio web no son funcionales ya que no tienen el atributo “action” ni el atributo “method” donde se especifique la ruta hacia donde se enviaran los datos de los formulario ni el metodo que se utilizara. Ademas, otras funcionalidades no esta desarrolladas debido a que te redirecciona al mismo lugar como “Forgot Password”.

Ahora realizaremos fuerza bruta de directorios en el directorio raiz del servidor web en busca de recursos escondidos.

  • index__d8338055.js

  • index__7ed54732.js

Podemos observaru que no encontramos algun recurso interesante, solo encontramos directorios donde se suelen almacenar los archivos JavaScript, CSS utilizados para el desarrrollo del sitio web. Ademas, podemos observar que el contenido de los archivos JavaScript estan ofuscados. Para ello utilizaremos la opcion “Pretty Print”({ {} }) de la herramienta “Debugger” integrada en el navegador web con el fin de observar sus contenidos de manera mas legible.

Podemos observar que logramos encontrar un dominio llamado “vulnnet.thm” con su subdominio “broadcast”. Ademas, nos encontramos un parametro GET “referer” . Ahora para acceder al dominio “vulnnet.thm”, y a su subdominio tendremos que agregarlos a nuestro archivo “/etc/hosts” asociado con la dirrecion IP del servidor web destino.

Podemos observar que el dominio le pertenece al sitio web encontrado anteriormente. Ademas, el directorio raiz del subdominio “broadcast” esta protegido por un metodo de autenticacion que no logre bypassear a patir de credenciales por defecto como “admin:password” o “admin:root” o “administrator:root” o “root:password” o “administrator:password” o “root:root”.

FASE GANAR ACCESO O EXPLOTACION O HACKING

Ahora le asignaremos al parametro GET “referer” la ruta del archivo “/etc/passwd”( inherente a los sistemas basados en Linux/Unix) con el fin de saber si este parametro es vulnerable a LFI.

Podemos observar que logramos observar el contenido del archivo “/etc/passwd” en el codigo fuente, por lo tanto, nos topamos con la vulnerabilidad LFI en el parametro GET “referer”. Ahora probaremos con diversos tipos de rutas de archivos conocidos en un sistema Linux de manera automatizada con el modulo “Intruder” de Burp Suite con el fin de saber si podemos acceder a los registros de acceso del servidor web o al archivo “sshd_config” o al directorio “.ssh” del usuario local “server-management” con el fin de buscar alguna clave privada SSH.

Podemos observar que no logramos obtener ninguna clave privada SSH en ninguna de las dos rutas. Ademas, tampoco tenemos acceso al registro de acceso del servidor web. Debido a esto estuve pensando en obtener el archivo “.htpaccess” donde se define las configuraciones de acceso y permisos sobre un directorio para cuando quieres implementar un mecanismo de autenticacion para protegelo. Ademas, este archivo solia ubicarse dentro del directorio que se iva a aplicar las configuraciones de acceso y permisos, pero en este caso viene a ser el directorio raiz de un subdominio el que se ha protegido con un mecanismo de configuracion. Por tal motive tuve que investigar sobre la ubicación del archivo “.htpaccess” para este caso.

Podemos observar que el archivo de configuracion “/etc/apache2/sites-enabled/000-default.conf” esta la seccion “Directory” donde se establece las configuraciones de acceso y permiso sobre el directorio raiz del subodiminio. Ademas, en la drectiva “AuthUserFile” encontramos la ruta del archivo oculto “.htppaswd” que suele almacenar las credenciales para autenticarse en el mecanismo de autenticacion configurado en el subdominio “broadcast”.

Podemos observar que logramos encontrar las credenciales para autenticarnos en el mecanismo de autenticacion configurado en el acceso al subdominio “broadcast”, pero la contraseña esta en forma de hash con un prefijo conocio. Ahora, utilizaremos John The Ripper para crackear el hash, y poder acceder al subdominio.

Podemos observar que se logro crackear el hash de la contraseña, logrando acceder al directorio raiz del subdominio. Luego, fuismos redirigidos a un sitio web de alojamiento de videos y que ha sido configurado y esta siendo gestionado con la aplicación CLIPBUCKET. Ahora buscaremos cual es la version instalada de CLIPBUCKET con el fin de buscar algun exploit publico para tal version.

Podemos observar que logramos saber la version del ClipBUCKET instalado en el servidor web a patir de un comentario en el codigo fuente de la pagina de inicio del sitio web. Ademas, logramos encontrar una vulnerabilidad “File Upload” en las versiones inferiores a “4.0-Release 49022”. Ahora intentremos cargar una archivo PHP que nos genere una reverse shell.

Podemos que logramos obtener acceso al sistem destino mediante la vulnerabilidad “File Upload”. Ahora daremos un tratamiento a nuestra reverse shell para que sea mas interactiva y estable.

FASE ESCALADA DE PRIVILEGIOS

Ahora buscaremos vectores de escalada de privilegios vertical de manera manual en el sistema de archivos del sistema destino.

  • Tareas Cron

Podemos observar que hay una tarea cron establecido en el archivo crontab general. Ademas, esta tarea cron consiste en ejecutar una script Bash con los privilegios de root de manera periodica y automatizada. Ademas, si observamos el contenido del script nos topamos con una vulnerabilidad bastante conocido llamada “tar wilcard injection” pero es necesario tener acceso al directorio home del usario local “server-management”.

  • Enumeracion de archivos del usuario “server-management” con el permiso de escritura y lectura habilitado

Podemos observar que nos topamos con un archivo comprimido con GZIP. Luego, nos topamos con un archivo tar donde logramos extraer una clave privada SSH encriptada. Ahora, utilizaremos John The Ripper para crackear la passphrase solicitada para desencriptar la clave privada.

Podemos observar que se logro encontrar el passphrase necesario para desencriptar la clave privada. Luego, logramos obtener acceso al sistema destino siendo el usuario server-management mediante la clave privada SSH. Ahora explotaremos la vulnerabilidad “tar wilcard injection” para asignarle el bit SUID al archivo binario bash.

De esta logramos asignarle el bit SUID al archivo binario bash, logrando ejecutar una shell Bash con privilegios de root. Ahora buscaremos las dos banderas.