Bank [EASY🟢]
Dificultad: Fácil
1- Reconocimiento y escaneo
1.1 Ping
1.1 PingPodemos notar que se trata de una maquina Linux, debido al TTL:
1.2 Nmap
1.2 NmapVemos que esta corriendo el puerto 22 correspondiente a un servidor SSH, el puerto 53 correspondiente a un servidor de nombres de dominio(DNS) y el puerto 80 correspondiente a un servidor web
Vemos tambien que el sistema operativo Linux que se encuentra corriendo en la maquina objetivo es un Ubuntu
1.3 whatweb
1.3 whatwebPara realizar el escaneo de tecnologías web, vamos a modificar el archivo hosts de la ruta "/etc/hosts" para que apunte al dominio "http://bank.htb/":
Editamos y quedaría asi:

De tal manera que cuando entramos al navegador no nos va a salir la pagina por default de Apache ya que se efectúa correctamente la resolución de DNS, nos saldrá un login:

Ahora, vamos a realizar el escaneo de tecnologías web con "whatweb":
Vemos tecnologías web como:
1.4 Fuzzing
1.4 FuzzingEn este caso el Fuzzing lo vamos a realizar con la herramienta "wfuzz" con el siguiente comando:
Ejecutamos:
Vemos un directorio en concreto interesante que se llama "uploads" donde se almacena la subida de archivos, por lo que podría llegar a ser que la intrusión venga por ese lado
2- Explotación
2.1 Intrusión por hash no cifrado dentro de los directorios
2.1 Intrusión por hash no cifrado dentro de los directoriosSi revisamos directorio por directorio de los resultados de Fuzzing realizado con wfuzz, vamos a notar que en un directorio llamado "balance-transfer" que contiene aparentemente hashes cifrados:

Vamos a verificar que todos los hashes estén cifrados mediante el peso de los archivos utilizando expresiones regulares con la herramienta "curl", utilizamos el siguiente comando:
Ejecutamos y nos daria como resultado un hash en texto plano de una cuenta de la aplicación web:
El nombre del archivo es:
Si lo buscamos dentro de nuestro navegador Firefox con CTRL + F, veremos que aquí esta:

Vamos a darle click derecho al archivo y darle a "Copy link" para bajárnoslo con curl con el siguiente comando:
Ejectuamos:
Tenemos las credenciales de Chris, las credenciales serian las siguientes:
Vamos a iniciar sesión dentro del panel de login de la aplicación web:

Iniciamos sesión:

2.2 Explotación por mala entrada de archivos a la hora de subirlos
2.2 Explotación por mala entrada de archivos a la hora de subirlosVamos a irnos dentro del apartado de "Support" una vez estando dentro de la cuenta de Chris:

Se puede ver que tenemos un sistema de tickets en caso de fallo de la aplicación web, esto esta referido a la carpeta de "Uploads" realizado en el fuzzing, por que nos deja subir archivos, por lo que podríamos pensar que se podría subir un archivo malicioso dentro del servidor web para obtener una shell reversa, si recordamos en el escaneo de tecnologías web con whatweb, esta pagina web utiliza PHP, por lo que el código malicioso lo vamos a realizar en PHP, en mi caso voy a utilizar este código clásico:
Pero antes vamos a revisar el código de la pagina de soporte:
Vemos que el desarrollador dejo comentarios dentro del codigo, entre ellos, uno interesante:
Supuestamente, la extensión .HTB se ejecuta como .PHP por propósitos de Debugging, nosotros podemos aprovecharnos de esto para subir un archivo .HTB y que la pagina lo tome como .PHP
Vamos a crearlo y a guardarlo:
Vamos a subirlo a Soporte:

Y vamos a enviarlo:

Recargamos la pagina y nos dejara visualizar el ticket, con el archivo malicioso adjunto:

Vamos a Attachment y a darle en "Click Here":

Nos mostrara una pagina en blanco, pero si dentro de la URL le cambiamos los parámetros para ejecutar comandos de la siguiente manera:
Vamos a ver que sucede:

2.3 Obtención de shell reversa con el archivo malicioso PHP subido
2.3 Obtención de shell reversa con el archivo malicioso PHP subidoYa tendremos acceso a la maquina objetivo, ahora vamos a obtener una shell reversa mediante este archivo malicioso, con el siguiente comando:
En mi caso el comando quedaria asi:
Pero antes de inyectarlo en la URL como valor del parámetro "?cmd=", debemos encodearlo como URL, en mi caso utilze BurpSuite, vamos a abrir BurpSuite

Nos vamos a ir a la pestaña de "Decoder":

Y vamos a seleccionar "Encode as ..." y seleccionaremos URL:

En el primer campo pondremos el comando:

De tal manera que el comando que deberíamos inyectarlo dentro del parámetro, quedaría encodeado de la siguiente manera:
Y la URL nos quedaría de la siguiente manera:
Ahora vamos a ponernos en escucha en nuestro Kali con netcat por el puerto 443:
Y vamos a utilizar el enlace donde encodeamos el comando para obtener la shell reversa:

Se nos va a quedar cargando, pero si volvemos a la consola donde teníamos netcat en escucha por el puerto 443:
Ya tendríamos acceso al servidor con privilegios de usuario
2.4 Obtención de la flag de usuario
2.4 Obtención de la flag de usuarioLa flag de usuario se encuentra dentro de la ruta "/home/chris/user.txt", ejecutemos un cat:
3- Escalado de privilegios
Si nos vamos a la carpeta raíz "/" y listamos los directorios:
Vamos a ir al directorio "var" y listamos los directorios:
Vemos que hay un directorio que no corresponde con los directorios tradicionales de un sistema operativo Linux, concretamente la carpeta "htb", vamos a ir dentro de la carpeta y listar los directorios:
Vamos a listar los directorios mas detalladamente para saber cual es un directorio y cual es un archivo:
Vemos que "emergency" es un archivo, si le hacemos un cat para visualizar lo que contiene dentro:
Parece que tenemos un código que esta hecho en Python que nos eleva los privilegios automáticamente :)
Vamos a ejecutarlo:
Se nos va a quedar así, pero si revisamos el código, tenemos que indicarle si queremos una shell como root, indicándole si SI o NO, le vamos a dar que si con la letra "Y":
Y si ejecutamos el comando "whoami":
3.1 Obtención de la flag root
3.1 Obtención de la flag rootLa flag de root se encuentra dentro de la siguiente ruta "/root/root.txt", vamos a hacerle un cat para visualizar la flag:
Con esto, concluimos la maquina "Bank" de Hack The Box
Espero te haya sido de ayuda este Write Up :)
Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales
Última actualización
