Bolt - TryHackMe

SUMMARY

Debemos encontrar una bandera en la maquina Bolt. Donde a partir del escaneo de puertos de Nmap pude saber que hay un servidor web Apache y un servidor web local que ha sido levantado utilizando el intérprete PHP. Además, a partir de una respuesta HTTP del servidor web PHP, pude saber que hay un sitio web que ha sido creado por el CMS Bolt. Luego, analizando las paginas web del sitio web pude encontrar unas credenciales del admin. Luego, accediendo al recurso bolt, que tenía un login, pude acceder al portal de administración del CMS utilizando las credenciales. Luego, inserte un payload, que me genero una reverse shell, en el código fuente de un archivo del theme que estaba utilizando el sitio web, llegando a obtener acceso al sistema destino siendo el 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 Bolt. 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 Bolt.

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 Bolt. 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.
  • Un servidor web local que ha sido levando en el puerto 8000 mediante el intérprete PHP. Además, se han realizados solicitudes HTTP hacia el servidor web, y en sus respuestas HTTP se puede saber que hay una página web cuya etiqueta HTML title toma el valor de Bolt | A hero is unleashed. Además, a partir del script http-generator, se pudo saber que esta pagina web ha sido creado por el CMS Bolt.
  • 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 la pagina web forma parte de un sitio web que esta aun en desarrollo. Además, este sitio web esta siendo creado y gestionado con el CMS Bolt. Además, a partir de los posts que ha hecho el admin Jake podemos obtener sus credenciales.

Además, es comúnmente sabido que el recurso para acceder al portal de administración del CMS es llamado bolt. Por lo tanto, accederemos a este recurso a través de mi navegador web.

Podemos observar que nos topamos con un formulario HTML o login, que viene a ser un mecanismo de autenticación para acceder al portal de administración del CMS.

Ahora intentaremos probar las credenciales, encontradas anteriormente, en el formulario.

Podemos observar que llegamos a autenticarnos exitosamente, y logramos acceder al portal de administración del CMS. Además, observamos que logramos autenticarnos siendo el usuario admin.

FASE GANAR EXPLOTACION O HACKING

Ahora que accedimos al portal de administración del CMS, explotaremos la vulnerabilidad Theme Injection, que consiste en insertar código malicioso en el código fuente de alguno de los archivos utilizados por el theme, que viene a ser como una plantilla prediseñada que determina la apariencia front-end del sitio web, pero antes debemos saber que theme está utilizando el sitio web. Para ello observaremos el archivo de configuración config.yml que se utiliza para personalizar y configurar diversos aspectos del CMS.

Podemos observar que el sitio web está utilizando el theme base-2018.

Ahora insertaremos un payload, que me generara una reverse Shell cuando se ejecute el theme, en el código fuente de su archivo index.twig,

Ahora antes de acceder de nuevo al sitio web desde nuestro navegador web con el fin de que se ejecute el theme con nuestro payload, debemos habilitar el puerto 1500 en nuestro sistema para que acepte la conexión entrante de la reverse Shell.

De esta manera obtenemos acceso al sistema destino mediante la explotación de la vulnerabilidad Theme Injection, y siendo el usuario root. Además, debido a que hemos logrado acceder al sistema destino siendo el usuario, omitiremos la fase de escalada privilegios.

Ahora debemos buscar la bandera en el archivo flag.txt.