Titulo: HackTheBox - Horizontall |
Fecha: 14-09-2021 |
Descripcion: Enumeracion - Fuzzing - Strapi - CVE |
Hack The Box - Horizontall Writeup
## Ping:
ping -c1 10.10.11.105
Mediante el comando ping vamos a trazar una ruta ICMP para ver si la maquina esta activa y ante que tipo de sistema operativo estamos
Podemos ver que la respuesta del ttl es 63 , el TTL en maquinas Linux es 64 y en maquinas Windows 128 , en este caso es 63 porque pasa por un nodo intermediario.
## Enumeracion :
Ahora vamos a proceder a ver que servicios tiene esta maquina abiertos para ello vamos a realizar una enumeracion de puertos:
Mediante el parametro --min-rate 5000 va a emitir paquetes no mas lento que 5000 paquetes por segundo
Podemos ver que tenemos el servicio web abierto , mediante la herramienta WhatWeb vamos a ver si estamos ante algun gestor de contenido
Podemos ver que se esta aplicando Virtual Hosting a horizontall.htb , por lo que vamos a tener que ponerlo en nuestro /etc/hosts
Ahora una vez que hemos configurado el Virtual Hosting , vamos a realizar un escaneo mas exhaustivo con Nmap
## Reconocimiento Web:
Vamos abrir el dominio horizontall.htb y vamos a inspeccionar la pagina en busca de directorios web potenciales o pistas
Vamos a realizar Fuzzing mediante la herramienta Wfuzz , en busqueda de directorios web potenciales
Tras un tiempo esperando , no nos reporta nada , por lo que vamos aplicar fuzzing buscando subdominios del dominio principal , para ello vamos a usar un diccionario de SecLists
Tras un tiempo , nos reporta un posible subdominio potencial , vamos a guardar dicho subdominio en nuestro /etc/hosts
Si abrimos dicho subdominio , no nos reporta gran cosa , por lo que haremos fuzzing a el subdominio buscando directorios web
Nos reporta varios directorios web potenciales que iremos investigando:
Si abrimos el directorio /reviews , vamos a ver que nos reporta informacion en Json , pero poca cosa
Si procedemos abrir el directorio web /users , es otro Json que no nos reporta informacion
Ahora si procedemos abrir el directorio web /admin que en principio parece el mas potencial , nos vamos a encontrar ante un panel de inicio de sesion de la herramienta Strapi
Strapi es un CMS basado en Node.js para todas las necesidades de API y gestion de contenidos de los desarrolladores.
Como no tenemos credenciales , podemos intentar buscar las credenciales por defecto , pero no funciona , tras mas investigacion podemos darnos cuenta de que cuenta con un CVE.
El CVE esta basado en la version 3.0.0-beta.17.4 , para obtener la version de Strapi vamos a tener que realizar un Curl
Podemos ver que estamos ante la version vulnerable de Strapi , por lo que podemos descargarnos el Exploit de exploit-db https://www.exploit-db.com/exploits/50239
Este exploit nos permite un RCE (Ejecucion Remota de Comandos) , sin tener una previa auntentificacion del servicio de Strapi
## Exploit CVE 50239:
Podemos inspeccionar el exploit para comprender como funciona y que parametros necesitamos pasarle para su ejecucion
Vamos a tener que ejecutarlo con python 3 y le debemos pasar el dominio
sudo python3 50239.py http://api-prod.horizontall.htb/
Tras su ejecucion nos devuelve un correo admin@horizontall.htb , un usuario y una contraseña para el panel de inicio de sesion y un token JSON que va a ser muy importante
Ahora podemos iniciar sesion en el panel de Strapi , como Administrador y investigar si hay alguna forma de acceder al servidor
Podemos observar que no podemos hacer gran cosa dentro del Panel , por lo que si tenemos ejecucion remota con el exploit , podemos crear una shell reversa , enviarsela al servidor y ejecutarla y que se conecte a nuestro equipo de atacante
Primero crearemos un fichero llamado "index.html" y dentro de el realizaremos un pequeño script en Bash que nos entable una Shell Reversa a nuestro equipo atacante
Una vez creado vamos a iniciar un servidor simple http mediante Python y vamos a realizar un curl para descargar el index.html y ejecutarlo mediante Bash
Mientras tanto nos debemos poner a la escucha mediante Netcat por el puerto que hemos configurado en la shell reversa y nos dara el acceso
Una vez que tengamos acceso a la maquina , ya podriamos visualizar el Flag del Usuario y nos quedaria solo escalar privilegios
## Escalada de Privilegios:
Ahora vamos a tener que buscar permisos SUID o algun tipo de proceso o ejecucion que nos permita escalar privilegios para poder ser usuario Root
Si investigamos la maquina podemos ver que tenemos Laravel trabajando en el servidor , existe un exploit que nos permite realizar un port forwarding a nuestra maquina atacante y ejecutar una shell con permisos de Root
Para ello vamos a realizar el port forwarding mediante el servicio SSH a nuestra maquina, empezaremos creando una llave publica y privada rsa
A esa llave que hemos creado le añadiremos un NetCat con el puerto que queremos que nos habra
Realizaremos el Port Forwarding mediante SSH , especificando el puerto 8000 de nuestra maquina atacante y la nuestra direccion IP local
Ya podemos observar que tenemos el servicio lavarel que corre en la maquina victima , corriendo en nuestra maquina atacante
Solo nos queda ejecutar el Exploit , que podemos encontrar en GitHub el PoC https://github.com/nth347/CVE-2021-3129_exploit
Ejecutamos los comandos que nos ofrece la prueba de concepto y le pasaremos como parametro que nos ejecute el Script que nos muestre la flag del usuario Root
Y ya tendriamos la maquina de Hack The Box Horizontall Explotada , con una dificultad Facil , que nos ha llevado varios dias de investigacion y probar el funcionamiento de las diferentes vulnerabilidades que existian!!