Headless es una máquina Linux de dificultad fácil que cuenta con un servidor Python Werkzeug que aloja un sitio web. El sitio web tiene un formulario de soporte al cliente, que se ha descubierto que es vulnerable a Cross-Site Scripting (XSS) ciego a través del encabezado User-Agent. Esta vulnerabilidad se aprovecha para robar una cookie de administrador, que luego se utiliza para acceder al panel de control del administrador. La página es vulnerable a la inyección de comandos, lo que lleva a un shell inverso en el equipo. Al enumerar el correo del usuario se revela un script que no utiliza rutas absolutas, que se aprovecha para obtener un shell como root.
Iniciamos con la enumeración de los puertos abiertos de la maquina victima.
Luego de obtener los puertos, enumeraremos los servicio y las versiones de los puertos abiertos que encontramos.
Haciendo fuzzing encontraremos con el directorio Dashboard
Otro con el directorio support
Ahora interceptando con Burp Suite encontraremos con una cookie nuestra, que al parecer hace una verificación si somo usuarios privilegiados.
Intentando un xss podemos ver que el sitio web bloquea la petición.
Revisando el siguiente sitio web podemos obtener mas información de como obtener una cookie de algún usuario administrador:
XSS - Cross Site Scripting
Ahora teniendo claro de como explotar la vulnerabilidad, primero iniciaremos un servidor en Python
Luego enviamos la petición y vemos que el sitio web detecta el ataque
Pero obtenemos una cookie en base64 que podremos usar en el sitio web
Introducimos la cookie con la herramienta cookie-Editor o simplemente puedes usar la devTools
Luego de recargar el sitio web podemos ver un panel de administrador
Command Injection
Luego de enumerar con varios métodos, encontramos que podemos ejecutar comandos en date=2024-03-23; ... así que haremos uso esto para acceder a la maquina victima.
Ahora creamos un archivo index.html
Que contendrá nuestra revershell:
Y luego iniciamos un servidor con Python en el puerto 80
Para luego ejecutar un :
así deberíamos de obtener un revershell
Escalada de privilegios
Enumerando la maquina victima con un sudo -l encontraremos con permisos que el usuario actual esta ejecutando.
Leemos el código del archivo que tenemos permisos privilegiado, encontramos algo interesante que es initdb.sh
Buscamos el archivo initdb.sh, pero no la encontraremos. Asi que crearemos uno con un contenido malicioso en el cual copiaremos el binario de la bash y daremos permiso de SUID
Luego ejecutaremos con sudo
Para asi obtener un binario bash con permiso de SUID
Haciendo uso de ./bash -p deberíamos de obtener una shell como usuario root