Validation [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 NmapTenemos el puerto 22 correspondiente a un servidor SSH(OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)), el puerto 80 correspondiente a un servidor web(Apache httpd 2.4.48 ((Debian))) y los puertos 4566 y 8080 correspondientes a nginx
1.3 whatweb
1.3 whatwebVemos tecnologías como:
1.4 Revisión del código fuente
1.4 Revisión del código fuenteVamos a revisar el código fuente de la pagina web alojada en el puerto 80(Apache httpd 2.4.48):

CTRL + U:

Dentro del codigo fuente no encontramos nada interesante
1.5 Fuzzing
1.5 FuzzingEn este caso el Fuzzing lo vamos a realizar con la herramienta "wfuzz":
Ejecutamos:
2- Explotación
2.1 Inyección SQL vía BurpSuite
2.1 Inyección SQL vía BurpSuiteVamos a irnos a la pagina web alojada en el puerto 80 y vamos a ingresar un usuario:

"Join now":

Ahora vamos a ingresar otro usuario mas, en mi caso "test2":

Luego de realizar una investigación, parece que dentro del formulario de "Username", no se acontece una Inyección SQL, pero... vamos a ver si se acontece utilizando Burp Suite
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 "Username" y vamos a registrar un usuario nuevo, en mi caso "test3":

Se va a quedar cargando el sitio web, pero si vamos a Burp Suite, el proxy nos habrá interceptado la solicitud:

Como pudimos ver anteriormente, dentro del formulario de "Username" no se acontece la Inyección SQL, por lo que vamos a probarlo dentro del paramtro "country="
En mi caso utilzare el siguiente codigo SQL para listar las bases de datos que se encuentran dentro de este sitio web:
De tal manera que la solicitud quedaria de la siguiente forma:
Vamos a darle en Forward a Burp Suite 2 veces:

Y volvemos al sitio web:

Podemos ver que nos registro con el nombre que anteriormente habíamos ingresado "test2", y además esta el primer usuario que registramos "test1" y el nombre de la base de datos que esta corriendo por detrás este sitio web, por lo que verificamos que este sitio web es vulnerable a inyecciones SQL
2.2 Archivo PHP malcioso con inyección SQL
2.2 Archivo PHP malcioso con inyección SQLSi recordamos en el escaneo que realizamos de tecnologias web que utilizaba este sitio web, utiliza PHP, por lo que podríamos crear un archivo .PHP malicioso para obtener una reverse shell y subirlo mediante instrucciones SQL al servidor web
Ahora, dicho esto, vamos a volver para atras y vamos a registrar un nuevo usuario, en mi caso "revshell" para que la solicitud enviada al servidor pase por el proxy de Burp Suite:


Vamos a inyectar el siguiente codigo SQL:
Lo que estamos haciendo con este codigo SQL, es alterar la consulta a la base de datos diciendole que queremos crear un archivo .PHP llamado "revshelll.php" que contenga el siguiente codigo PHP:
Y este archivo "revshell.php" se va a almacenar dentro del dirctorio "/var/www/html/", mismo directorio donde se almacenan generalmente las aplicaciones web o sitios web dentro de GNU/Linux
La solicitud quedaria de tal manera:
Vamos a darle en Forward 2 veces dentro de Burp Suite como realizamos anteriormente, para que la solicitud llegue a la maquina objetivo de Hack The Box y vamos a volver al sitio web:

Nos dio un error, pero si accedemos a la siguiente URL especificándole el nombre del archivo malicioso que acabamos de subir llamado "revshell.php" y el parámetro "?cmd=" con el comando "whoami" de Linux:

2.3 Reverse shell con el archivo PHP malcioso subido
2.3 Reverse shell con el archivo PHP malcioso subidoAhora vamos a obtener una reverse shell, por el puerto 443, asi que vamos a ponernos en escucha con netcat:
Y para obtener la reverse shell en una consola de Kali, es necesario pasarle un comando como parametro "?cmd=" del archivo malicioso "revshell.php" que subimos anteriormente, en mi caso utilizare el siguiente comando:
Y para introducirlo en la URL, es necesario encodearlo en formato URL, para eso utilizamos Burp Suite, concretamente la pestaña "Decoder":

De tal manera que en mi caso el comando que le vamos a pasar al parametro en mi caso quedaria de la siguiente manera:
Y la URL completa, de la siguiente manera:
Ingresamos el parámetro dentro de Firefox en el sitio web:

Quedara cargando, pero si vamos a la consola donde teníamos netcat en escucha por el puerto 443:
2.4 Obtención de la flag de user
2.4 Obtención de la flag de userLa flag de usuario se encuentra dentro de la ruta absoluta "/home/htb/user.txt", vamos a visualizar la flag con "cat"
3- Escalado de privilegios
3.1 config.php
3.1 config.phpSi vamos a la ruta "/var/www/html" nos encontraremos con un archivo llamado "config.php":
Los archivos de configuración de una aplicación web, CMS o sitio web, por lo general suelen contener credenciales, asi que vamos a visualizar este archivo:
Vemos que contiene unas credenciales:
Investigando un poco, me di cuenta que a veces las credenciales de por si mismas de por ejemplo, una base de datos, a veces suele ser la misma que la de otros usuarios dentro de GNU/Linux, por una mala configuración o desconocimiento del usuario, asi que probemos logearnos con el usuario "root" con la password "uhc-9qual-global-pw", para eso vamos a utilizar el comando "su -":
Podemos ver que es la password correcta, ahora vamos a obtener un prompt correcto para no tener errores a la hora de tipear o buscar la flag de root, para eso utilizamos el comando "script /dev/null -c bash":
3.2 Obtención de la flag root
3.2 Obtención de la flag rootLa flag de usuario se encuentra dentro de la ruta absoluta "/root/root.txt", vamos a visualizar la flag con "cat":
Con esto, concluimos la maquina "Validation" 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
