Squashed - HackTheBox

elc4br4elc4br4
5 min read

En esta máquina Linux de nivel easy tendremos que montar directorios compartidos NFS, obtener reverse shell a través de la subida de un archivo malicioso y escalaremos privilegios a través del fichero .Xauthority.

HTBadge


Reconocimiento

Reconocimiento de Puertos🔍

Como de costumbre comienzo con el reconocimiento, pero antes de lanzar la utilidad nmap, lanzo el script Whichsystem.py que me sirve para identificar el sistema operativo de la máquina a la que me voy a enfrentar.

Esta herramienta creada por s4vitar se basa en el TTL (Time to Live) para identificar si es una máquina que corre un sistema operativo Linux o Windows.

TTLSistema Operativo
64Linux
128Windows

En este caso me arroja un TTL de 63, por lo que al acercarse más a 64 que a 128 ya se que es una máquina Linux.

Una vez que ya se que es una máquina Linux puedo proceder al reconocimiento de puertos.

# Primer escaneo para sacar los puertos abiertos de la máquina
nmap -p- -Pn -n --min-rate 5000 10.10.11.191 --open -vvv

# Segundo escaneo para sacar la versión de lo que se ejecuta en cada puerto y lanzamiento de una serie de scripts básicos de nmap contra dichos puertos.
nmap -p80,22,111 -sCV -n 10.10.11.191

Por el momento tengo la siguiente información:

PuertoServicioVersión
22sshOpenSSH 8.2p1 Ubuntu
80httpApache httpd 2.4.41
111rpcbindrpcbind 2-4

En el puerto 111 (rpcbind) hay varias comparticiones nfs.

Iré por partes, comenzando por la enumeración del puerto 80 en el que reside un servidor web.


Enumeración

Puerto 8️⃣0️⃣

Accedo a la url desde el navegador para ver que me encuentro.

Aparentemente no hay nada útil a primera vista, en el código fuente tampoco.

Procedo a fuzzear para ver que rutas existen en el servidor...

Pero no encuentro nada útil... Busqué vhosts pero tampoco había nada por lo que decido pasar al puerto 111.

Puerto 1️⃣1️⃣1️⃣

En el escaneo nmap encontré varias comparticiones o montajes nfs que podría intentar montar en mi máquina.

Os dejo un recurso muy útil para que puedan entenderlo bien y explotarlo.

https://hacktricks.boitatech.com.br/pentesting/nfs-service-pentesting

Existen varios scripts de nmap para enumerar nfs así como un módulo de metasploit.

Primeramente he de averiguar que rutas puedo montar.

# Primero he de averiguar que carpetas tiene el servidor disponibles para montar
> showmount -e 10.10.11.191
Export list for 10.10.11.191:
/home/ross *
/var/www/html *

Puedo montar esas dos rutas, por lo que creo dos directorios en /tmp para montar cada directorio de servidor en cada carpeta creada en /tmp.

# Creo los directorios
mkdir /tmp/ross
mkdir /tmp/www
# Monto los directorios en cada carpeta
sudo mount 10.10.11.191:/home/ross /tmp/ross
sudo mount 10.10.11.191:/var/www/html /tmp/www

Una vez montados accedo al directorio home del usuario ross y echo un vistazo a ver que encuentro...

Veo que existe un archivo llamado Passwords.kdbx que es básicamente el archivo de la base de datos que usa keepass para almacenar las contraseñas.

Intento obtener el hash de la contraseña para posteriormente intentar crackearlo con john o hashcat.

# Con la herramienta keepas2john intento sacar el hash con el siguiente comando.
keepass2john Passwords.kdbx > /home/elc4br4/HTB/Squashed/hashkdbx

Pero al intentarlo me arroja un error.

Tras investigar durante un buen rato llego a la conclusión de que es un rabbit hole y que he de ir por otro camino...

Aún tengo el directorio /var/www/html por investigar, así que una vez montado intento acceder pero no tengo permisos.

Como vemos solo tiene acceso al directorio el usuario www-data y su uid es 2017, por lo que podría intentar algo...

Crearé un usuario en mi máquina llamado www-data con el uid 2017.

Una vez creado ya consigo acceder al directorio.

Recordemos que estoy dentro de la ruta del servidor web, por lo que podría crearme una reverse shell y subirla al propio servidor.
De la siguiente forma:

  1. Primero creo la reverse shell y la modifico con mi ip y el puerto (443 en mi caso).

Usaré la reverse shell de pentest monkey.

  1. La subo a la carpeta compartida descargándola con wget tras haber iniciado un servidor python3 en mi máquina local.
# Servidor python3 
python3 -m http.server 8081

  1. Pongo un oyente de netcat en escucha y ejecuto la reverse shell desde el navegador.

Y ya tengo acceso al sistema como el usuario alex.

Pero antes de continuar actualizo la tty para tener una shell estable e interactiva.

> script /dev/null -c bash

> Ctrl+z

> stty raw -echo; fg 
        reset
    terminal type? xterm

export TERM=xterm
export SHELL=bash

Ahora ya tengo una shell más estable e interactiva.


Escalada de Privilegios

.Xauthority☣️

Toca escalar privilegios, y para ello en primer lugar lanzo el script linpeas.sh.

Peeeerooo no encuentro nada útil, así que recuerdo que en el directorio que montamos anteriormente /home/ross había archivos que no podíamos leer, por lo que podría realizar lo mismo que anteriormente para poder leerlos.

Creo el usuario ross y le asigno el uid 1001.

Ahora veo que puedo leer aquellos archivos que antes no podía y veo que un posible vector de escalada puede ser a través de .Xauthority.

Buscando información al respecto encuentro lo siguiente.

https://blog.stderror.net/post/hijack-a-xsession/

Para conseguir la escalada de privilegios sigo estos pasos:

  1. Primero paso el archivo .Xauthority a la sesión del usuario alex (la de la reverse shell)

  2. A continuación ejecuto los siguientes comandos en la sesión de alex (la de la reverse shell).

XAUTHORITY=/tmp/.Xauthority
export XAUTHORITY

# Realizo la captura de pantalla de la sesión
xwd -root -screen -silent -display :0 -out /tmp/captura.xwd
  1. Pasamos el archivo screen.xwd a la máquina atacante a través de un servidor http.server de python

  2. Abrimos la captura.

xwud -in captura.xwd

Y ya tenemos la password del usuario root para loguearnos por ssh.

Me logueo y ya puedo leer la flag de usuario root.

0
Subscribe to my newsletter

Read articles from elc4br4 directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

elc4br4
elc4br4

Cybersecurity Student