Kiba - TryHackMe
SUMMARY
Debemos encontrar dos banderas. Donde a partir de un escaneo de puertos pude saber que hay un servicio Web, SSH, y una aplicación desconocida ejecutadas en el sistema destino. Además, gracias a una respuesta HTTP emitida por el servidor web pude saber que la aplicación ejecutada en el sistema destino es Kibana, que es utilizada para visualizar, buscar y analizar datos indexados en su motor de búsqueda integrado. Luego, logre encontrar un PoC de la vulnerabilidad RCE presente en la versión asociada a la aplicación Kibana, logrando acceder al sistema destino mediante una reverse Shell. Luego, para la escalada privilegio vertical, aproveche que al archivo binario ejecutable python3 se le había asignado el capability cap_setuid para ejecutar una nueva instancia de Shell con los privilegios de 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 Kiba. 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 Kiba.
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 Kiba. 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 HTML title de la pagina web que viene por defecto en la instalación del programa servidor.
- Un programa servidor SSH en el puerto 22.
- Una aplicación desconocida ejecutada en el servidor 5601. Además, podemos observar el contenido de una respuesta HTTP cuyo código de estado HTTP es 302 y con el encabezado HTTP Location con la ruta hacia donde se ha trasladado el recurso solicitado.
Ahora accederemos a la ruta a traves del navegador web para verificar si se trata de la aplicación Kibana que proporciona una interfaz web donde puede observar, buscar y análisis datos indexados a su motor de búsqueda nativo o integrado.
Podemos observar que si se trata de la aplicación Kibana. Además, la versión de la aplicación instalada en el sistema destino es 6.5.4.
Ahora buscaremos en el motor de búsqueda de Google vulnerabilidades que presente la aplicación en esa versión.
En el sitio web https://research.securitum.com/prototype-pollution-rce-kibana-cve-2019-7609/ se ha documenta una prueba de concepto o PoC para demostrar la vulnerabilidad RCE en las versiones inferiores 6.6.1 de la aplicacion ya que a traves del visualizador Timelion podemos ejecutar un código Javascript que nos generaría una reverse Shell con los privilegios de la cuenta del usuario con que se ha ejecutado la aplicación Kibana en el sistema destino.
FASE GANAR ACCESO O HACKING O EXPLOTACION
Ahora insertaremos el siguiente payload en el visualizador Timelion y lo ejecutamos dando clic al botón que tiene una flecha. Luego, daremos clic a la sección Canva del panel izquierdo con el fin de generar la reverse Shell, pero antes debemos habilitar el puerto 1500 en nuestro sistema en modo listening.
De esta manera logramos acceder al sistema destino mediante la vulnerabilidad RCE asociada a la versión de la aplicación Kibana.
Ahora convertiremos nuestra reverse Shell en una Shell más estable e interactiva con el fin evitar de que se cierre con errores simples. Luego, buscaremos vectores de escalada privilegio de manera manual en el sistema de archivos del sistema destino.
FASE ESCALADA PRIVILEGIOS
Ahora realizaremos una enumeración manual sobre el sistema de archivos del sistema destino con el fin de buscar vectores de escalada privilegio.
Podemos observar que al archivo binario ejecutable python3 le han asignado la capability cap_setuid por lo que el programa va a poder cambiar su UID a 0 de manera temporal para realizar ciertas operaciones.
Ahora aprovecharemos esto para utilizar el parámetro -c del comando Python con el fin de ejecutar una serie de comandos en el sistema operativo del sistema destino. Primero, importaremos la biblioteca os. Luego, cambiaremos el UID del usuario a 0, y ejecutaremos una nueva instancia de Shell con los privilegios de root.
De esta manera logramos realizar una escalada privilegio vertical.
Ahora buscaremos las dos banderas.