SecNotes [MEDIUM🔵]
Dificultad: Medio
1- Reconocimiento y escaneo
1.1 Ping
1.1 PingPodemos notar que se trata de una maquina Windows, debido al TTL:
1.2 Nmap
1.2 NmapSe visualiza en el escaneo de Nmap, los puertos 80 con el servicio HTTP IIS de Microsoft Windows en su versión 10.0, 445 donde se aloja el servidor SMB de la maquina objetivo, podemos tambien notar que nos da la versión de Windows que esta corriendo (Windows 10 Enterprise 6.3) y tambien vemos el workgroup HTB para acceder mediante SMB, y tambien el puerto 8808 donde aparentemente se aloja el panel de Administración de IIS
1.3 whatweb
1.3 whatwebSe puede ver tecnologías como:
1.4 Fuzzing
1.4 FuzzingEn el proceso de fuzzing no encontraremos nada relevante
En este caso, la intrusión ira por otro lado, la intrusión sera por el sitio web, entremos a Firefox en nuestro Kali y vamos a la pagina web por el puerto 80(En mi caso "http://10.10.10.97/login.php")

Podemos ver un panel de login y register. Ahora vamos a ir al sitio web, pero por el puerto 8808:

Esta relacionado con el servicio 8808 que escaneamos con Nmap, IIS(Internet Information Services)
2- Explotación
2.1 XSS
2.1 XSSVamos a probar un XSS básico dentro de la pagina web que corre por el puerto 80, donde se encuentran los formularios
¿Cómo lo hacemos?
Interactuando o modificando con los campos o formularios inyectando código
Aunque en este caso es diferente y vamos a verlo, vamos a crearnos una cuenta en el panel de "Sign up now"

Al darle al boton de "Submit" nos creara una cuenta, ahora vamos a iniciar sesión dentro del panel de login con la cuenta que me registre:

Una vez iniciado sesión, nos saldra un panel como este:

Aparentemente es un sitio web para crear notas, vamos a crear una nota con el botón "New Note"

Botón "Save" para guardar:

Guardó la nota en el panel, ahora, que pasaría si ponemos código HTML en el formulario para crear notas?

Botón "Save" para guardar:

Se acontece un XSS, podriamos realizar la explotación de la maquina por aqui, con robo de sesión mediante las cookies, pero al hacerlo y estar investigando, la maquina da fallos, asi que vamos a ir por otro lado.
2.2 SQL Injection
2.2 SQL InjectionVamos a probar una SQL Injection basica dentro de la pagina web que corre por el puerto 80, donde se encuentran los formularios
¿Como lo hacemos?
Interactuando o modificando la consulta SQL que se realiza a la base de datos mediante los formularios de Login o cualquier otro formulario que este directamente relacionado con una base de datos
Aunque en este caso es diferente y vamos a verlo, vamos a crearnos una cuenta en el panel de "Sign up now", pero en el username vamos a aplicar la modificación de la consulta SQL:

Al darle "Submit" para crear la cuenta, veremos que la cuenta se crea correctamente, ahora vamos a iniciar sesión con las credenciales en la que pusimos en el username la alteración de la consulta SQL:

Botón "Login" para iniciar sesión:

Nos inicio sesión como el primer usuario de la tabla de usuarios, que generalmente suele ser el usuario Administrador y además, tiene acceso a todas las notas, por lo que verificaríamos que es el usuario Administrador, tambien podemos visualizar en la parte de arriba, un correo electronico:
Tambien, si revisamos las notas que aparecen en el panel, veremos que dentro de una de las notas, hay un usuario y una password:

2.3 CSRF(Cross-Site Request Forgery)
2.3 CSRF(Cross-Site Request Forgery)Vamos a cerrar sesión del usuario tyler que habiamos comprometido con la SQL Injection con el boton "Sign Out" y vamos a volver a iniciar sesión con el usuario que hemos creado, en mi caso:

Vamos a cambiar nuestra contraseña con el boton "Change Password":

Aqui en este formulario, podemos ver una vulnerabilidad bastante critica, el formulario de contraseña nos deberia tambien preguntar la contraseña actual, como un input de "Current Password", este no es el caso, por lo tanto, se acontece la vulnerabildiad CSRF dentro de este formulario, esta vulnerabilidad la vimos en el Write Up de "BADSTORE 1.2.3".
Vamos a dar un repaso a la vulnerabilidad CSRF:
2.3.1 ¿De que trata la vulnerabilidad CSRF?
2.3.1 ¿De que trata la vulnerabilidad CSRF?Esta vulnerabilidad se acontece cuando mandamos una solicitud al servidor, y esta solicitud la hacemos pasar por un proxy para posteriormente modificarla y convertirla de una solicitud POST a una solicitud GET, generando un link malicioso para cambiar la contraseña de los usuarios, vamos a ver que el software que utilizaremos como proxy es Burp Suite para modificar la solicitud y convertir la solicitud de POST a GET para generar un link malicioso
Vamos a abrir Burp Suite y nos vamos a ir a la pestaña de "Proxy":

Vamos a ir a la configuración del proxy de Burp, en la subpestaña de "Proxy settings":

Vemos que el proxy, esta configurado con la IP 127.0.0.1 por el puerto 8080, sabiendo esto, vamos a ir a Firefox en nuestro Kali, y nos vamos a ir a ajustes del navegador o settings:

En el cuadro de busqueda de opciones, vamos a buscar la palabra clave "network"

Vamos a abrir la configuración de red, con el boton "Settings"

Vamos a darla a "Manual proxy configuration" y lo configuraremos con la IP y puerto correspondiente del proxy de Burp, en este caso la IP 127.0.0.1 y el puerto 8080

Vamos a aceptar con el boton "Ok", este paso no necesariamente tiene por que ser así, podemos configurar el proxy de Burp con la extensión de Foxy Proxy
Abrimos Burp Suite de nuevo y nos ponemos en modo intercepción:

Volvemos al formulario de cambio de contraseña con el boton "Change Password"

Y vamos a rellenar el formulario con una contraseña cualquiera, en mi caso:

Botón "Submit" para cambiar la contraseña, se nos va a quedar cargando:

Si volvemos a Burp Suite, abremos interceptado la solicitud:

Podemos ver la contraseña que mencione anteriormente, 123456789
Ahora, vamos a dar click derecho en el campo de la consulta dentro de Burp:

Vamos a seleccionar concretamente la opcion "Change Request Method", automaticamente se nos cambiara a una solicitud GET, si volvemos a darle al boton "Change Request Method", nos cambiaria de vuelta a POST.
La solicitud en formato GET, quedaria así:
En la primera linea de la solicitud podemos notar esto:
¿Que pasaria si quitamos la palabra "GET"?
Quedaria de la siguiente manera:
Pareceria una URL, que le falta la dirección IP o dominio, si le agregamos la dirección IP de la maquina objetivo de Hack The Box y quitamos el HTTP/1.1, quedaria una URL funcional:
Tambien, veremos que en la URL, se encuentra la contraseña, tanto para confirmar que la contraseña es correcta, como la contraseña nueva del primer campo que introducimos en el formulario de cambio de contraseña, si la modificamos a 0987654321, quedaria asi:
Dropeamos la solicitud de BurpSuite con el boton "Drop"
Y volvemos a acceder a la pagina web de la maquina de Hack The Box:

Vemos la URL limpia del sitio web "10.10.10.97", ahora, vamos a ingresar el link dentro del navegador Firefox:
"http://10.10.10.97/change_pass.php?password=0987654321&confirm_password=0987654321&submit=submit HTTP/1.1"
Y veremos que sucede esto:

Se nos actualizo la password a 0987654321, por lo tanto mi cuenta ahora es:
La contraseña se ha cambiado solamente con entrar en el enlace y podriamos cambiar la contraseña cuantas veces queramos solo con la URL, obviamente cambiando la contraseña del enlace en los parametros correspondientes de la URL
Ahora bien, vamos a ir a "Contact Us":

Y veremos que podemos contactar a Tyler, nuestro querido amigo Tyler :)
Aparentemente, como vimos en la SQL Injection, es el administrador, y la sección de "Contact Us", es como una especie de soporte:

Vamos a enviarle con el boton "Send", el enlace que previamente habiamos creado para cambiar la contraseña solamente con entrar en el mismo:
Con la contraseña 0987654321

Vamos a enviarselo a Tyler con el boton "Send", entonces si Tyler hace click en el enlace, estaria cambiando su contraseña automaticamente a 0987654321

Vamos a cerrar sesión de nuestra cuenta con el boton "Sign Out":

Si recordamos bien, en la SQL Injection cuando comprometimos la cuenta de Tyler, dentro de una de las notas que podiamos visualizar en la imagen, teniamos estas credenciales:
Como Tyler entro al enlace que le enviamos la contraseña ya no es "92g!mA8BGjOirkL%OG*&", si no que ahora es:
Probemos:

Boton "Login" para iniciar sesión:

Nos adueñamos de la cuenta del Administrador Tyler, por que hizo click en la URL que le enviamos
2.4 Intrusión por SMB
2.4 Intrusión por SMBSi recordamos en el escaneo de Nmap, teniamos el puerto 445 abierto para recursos compartidos, y tambien tenemos las siguientes credenciales de Tyler
Vamos a conectarnos a los recursos compartidos del servidor SMB con estas credenciales, pero antes vamos a validar si las credenciales son validas utilizando la herramienta crackmapexec dentro de nuestro Kali con el siguiente comando:
El comando se estructura de la siguiente manera:
Ejecutamos el comando en nuestro Kali:
Las credenciales son validas, por ende vamos a proceder a listar los recursos compartidos via SMB con las credenciales mediante la herramienta smbmap con el siguiente comando:
El comando se estructura de la siguiente manera:
Ejecutamos:
Tenemos varios recursos compartidos, entre ellos el recurso "new-site", donde tenemos permisos de escritura(WRITE) y lectura(READ) y tambien tenemos el recurso "IPC$" donde solo tenemos permisos de lectura con el usuario "tyler".
Vamos a ejecutar el mismo comando de smbmap, pero espceificandole como parametro el recurso "new-site":
Ejecutamos:
En el recurso compartido "new-site", tenemos 2 archivos
El nombre de estos archivos, hacen referencia al puerto 8808 que escaneamos con Nmap:
Son 2 archivos que se estan ejecutando dentro de la pagina del host objetivo dentro del puerto 8808
Si nos fijamos bien, tenemos permisos de ESCRITURA y LECTURA, osea que podemos tanto ver archivos, como ejecutar y subir archivos, por lo que tambien si prestamos atención al escaneo que realizamos en whatweb de las tecnologias web, esta pagina web, esta realizada en PHP, podemos subir un archivo malicioso en PHP que nos de una shell mediante el recurso compartido "new-site" donde podemos subir archivos
Por ende, vamos a crear un archivo .PHP dentro de nuestro Kali con el siguiente codigo malicioso:
Codigo PHP de reverse shell en GitHub
Una vez creado el archivo PHP, vamos a conectarnos por SMB al recurso "new-site" mediante la herramienta smbclient con el siguiente comando:
El comando se estructura de la siguiente manera:
Ejecutamos:
Si ejecutamos el comando "dir" para listar los directorios encontraremos los archivos que mencionamos anteriormente que estaban relacionados con el puerto 8808:
Vamos a subir el archivo malicioso, en mi caso, el archivo se llama "reverse_shell.php". El comando a utilizar es "put"
Ejecutamos:
El archivo ya esta subido, ahora podemos acceder al archivo PHP malicioso mediante el navegador Firefox, con la siguiente URL:
Si insertamos esta URL en el navegador Firefox de nuestro Kali:

Y somos el usuario Tyler, como si tuviéramos una shell dentro del navegador
3- Obtención de reverse shell con el archivo PHP malicioso
3.1 Conexión con netcat
3.1 Conexión con netcatVamos a descargarnos netcat pra Windows ya que es una maquina Windows, y mediante SMB vamos a subir el binario de netcat
Descarga binario de netcar para Windows
Una vez descargado, vamos a subirlo mediante SMB con el comando "put", como hicimso anteriormente con el archivo PHP malicioso para obtener la reverse shell:
(Recordar subir el archivo "nc64.exe", el archivo "nc.exe" no)
Si volvemos al navegador Firefox donde teniamos la reverse shell en PHP y listamos directorios con el comando "dir" dentro de la URL, concretamente en el parametro "?cmd="

Verificamos que tenemos el archivo "nc64.exe" subido correctamente
Ahora vamos a ponernos en escucha por el puerto 443 dentro de nuestro Kali:
Y vamos a volver al navegador Firefox para dentro de la URL, establecer la conexión en el parametro correspondiente:
Estructura de la URL:
(En este caso estariamos ejecutando un CMD)
Ejecutamos y quedaria cargando la pagina:

Pero si volvemos a la terminar de Kali donde teniamos en escucha netcat por el puerto 443, veremos que nos dio acceso a un CMD de Windows:
3.2 Obtención de la flag usuario
3.2 Obtención de la flag usuarioLa ruta donde se encuentra la flag de usuario para reclamarla en Hack The Box es:
Dentro de la carpeta personal del usuario Tyler, en el escritorio, el archivo llamado "user.txt" contiene la flag de usuario
4- Escalada de privilegios
Si vamos a la carpeta del Escritorio del usuario tyler, podremos ver que hay un acceso directo llamado "bash.lnk"
Por el nombre podriamos deducir que es una bash de GNU/Linux, por lo que en este sistema Windows, corre WSL(Windows Subsystem Linux), el subsistema de Linux dentro de Windows
Vamos a visualizar que es lo que contiene el archivo "bash.lnk" con el comando "type":
Si miramos bien lo que nos devuelve el comando, podremos ver que hay un archivo "bash.exe", dentro de la siguiente ruta "C:\Windows\System32\bash.exe"
Vamos a movernos a la ruta encontrada:
Y ejecutamos el archivo "bash.exe" previamente mencionado:
Si ejecutamos el comando "whoami":
Somos usuarios root
Pero como podemos ver, no tenemos un prompt dentro de esta consola, vamos a ganarnos un prompt con el siguiente comando:
Ejecutamos:
Ya tendríamos un prompt
Si listamos los directorios ocultos con el comando "ls -la":
Vemos que hay un archivo oculto llamado ".bash_history" que contiene el historial de la bash, si la visualizamos con el comando "cat", tambien podriamos ejecutar el comando "history", es lo mismo:
Vemos que hay unas credenciales para conectarnos mediante SMB
Vamos a conectarnos mediante SMB con estas credenciales al recurso compartido "C$" con el siguiente comando dentro de nuestra maquina Linux en una consola nueva:
Ejecutamos:
Nos conecta correctamente
4.1 Obtención de la flag root
4.1 Obtención de la flag rootLa flag de root se encuentra en la siguiente ruta:
Dentro de la ruta "\Users\Administrator\Desktop\root.txt"
Y para guardar el archivo root.txt dentro de nuestro Kali, utilizamos el comando "get" para descargarlo
Salimos de smbclient con el comando "exit" y hacemos un "cat" al archivo "root.txt " para visualizar la flag de root e introducirla en Hack The Box
Con esto, concluimos la maquina "SecNotes" 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
