# Inclusiveness

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fl2nSOgJb4mu9BpxJo7ue%2FSQL%20injection%20vulnerability%20in%20WHERE%20clause%20allowing%20retrieval%20of%20hidden%20data%20(1).png?alt=media&#x26;token=475dfe7d-aefd-472a-837e-5bbb040d49c3" alt=""><figcaption></figcaption></figure>

### Enumeración

#### Servicios abiertos

Comenzamos realizando un escaneo rápido de los servicios que tiene abiertos está máquina.

```
nmap -p- --open --min-rate 5000 -Pn -n -vvv 192.168.196.14
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fjp3pbBngMFeTWfte66sv%2Fimage.png?alt=media&#x26;token=135ce807-c6bc-47cc-96b6-abbc43de273a" alt=""><figcaption></figcaption></figure>

La máquina objetivo tiene tres servicios abiertos (21,22 y 80). Vamos a realizar un escaneo profundo de estos servicios.&#x20;

```
nmap -p21,22,80 -sVC -vvv 192.168.196.14
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FV67XoLsmJWg6GRYklJNi%2Fimage.png?alt=media&#x26;token=2adb44ba-d68d-41dc-8f04-9db0d6ec5435" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FPeGMNStKavuvy2DWhjwO%2Fimage.png?alt=media&#x26;token=2f76ab58-9d88-4bb7-a899-f72a7fe5ca8a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FUJUiw5jThQps9rYDE95T%2Fimage.png?alt=media&#x26;token=c266b7cf-324f-4fe7-afc4-ee77675c7f44" alt=""><figcaption></figcaption></figure>

Servicios abiertos:

* Puerto 21 -> FTP -> vsFTPd 3.0.3
* Puerto 22 -> SSH -> OpenSSH 7.9
* Puerto 80 -> HTTP -> Apache httpd 2.4.38

Como información relevante, vemos que podemos iniciar sesión de manera anónima en el servidor FTP.&#x20;

#### FTP

Conociendo la información recibida de NMAP, podemos comenzar viendo el contenido del servidor FTP.&#x20;

```
ftp 192.168.196.14
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FiaaqtWl8kAurBKdPwTTd%2Fimage.png?alt=media&#x26;token=380d736c-df42-4874-a539-5f0d9dc6648e" alt=""><figcaption></figcaption></figure>

Solo podemos acceder a un directorio que no contiene información de interés. Puede ser útil más adelante.&#x20;

#### Enumeración Web

Otro puerto importante que se encuentra abierto en la máquina objetivo es el 80. Vamos a inspeccionar su contenido.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FIWrcNoxTEQvEKM7pufvu%2Fimage.png?alt=media&#x26;token=ca135521-3dbb-415b-89fe-bbb763830fb4" alt=""><figcaption><p>Página por defecto de un servidor Apache</p></figcaption></figure>

Seguimos con la enumeración de directorios.&#x20;

```
dirsearch -u "192.168.196.14" -i200,301 -t 30
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FmNVGVACEDM4ap22c2qfA%2Fimage.png?alt=media&#x26;token=7e70d007-18f9-4661-9f9e-3b8100375adb" alt=""><figcaption></figcaption></figure>

Lo que llama más la atención es la cantidad de archivos "robots.txt" que tiene esta aplicación Web. Vamos a ver el contenido de estos archivos.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fgw0t523fb50FxsitNsbi%2Fimage.png?alt=media&#x26;token=ea121a81-a00c-4edf-9d96-765d32e2c30d" alt=""><figcaption></figcaption></figure>

Todos devuelven el mismo contenido. Este archivo detecta nuestro user-agent y por tanto, que no somos un buscador. Podemos crear un user-agent que nos permita saltar esta restricción. En nuestro caso, vamos a utilziar el bot que usa Google para indexar los directorios registrados por los sitios Web en sus respectivos "robots.txt".&#x20;

Para ello, vamos a utilizar la herramienta "curl".

```
curl -s --user-agent Googlebot http://192.168.196.14/robots.txt -v
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FrRyHC4OGZthlnh7EZl5b%2Fimage.png?alt=media&#x26;token=bdf6658b-0104-4edb-a048-8bef3decad74" alt=""><figcaption></figcaption></figure>

Obtenemos el contenido del archivo "robots.txt". Vamos a inspeccionar el contenido en el navegador.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FdqlYWUAbAXh86dkT92Rs%2Fimage.png?alt=media&#x26;token=4b419c5a-096d-457b-a04b-c39fe0b8e193" alt=""><figcaption></figcaption></figure>

Llegamos a una página donde nos explican el ataque de transferencia de zona DNS.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FlMEYiBFLTL9fG6P7iK1R%2Fimage.png?alt=media&#x26;token=873e5fec-23d8-49e1-bffc-2204dfcfe175" alt=""><figcaption></figcaption></figure>

Al clicar sobre uno de los idiomas, vemos que el archivo se carga en una variable. Vamos a probar si existe una vulnerabilidad de "local file inclusion", LFI.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F2PPzZ7Sq4GcfBfpXgksu%2Fimage.png?alt=media&#x26;token=e180ed90-a0b2-4d71-a2b7-efce9e6d31e6" alt=""><figcaption></figcaption></figure>

El sitio Web tiene una vulnerabilidad de LFI.&#x20;

### Explotación

Como vimos en el escaneo de servicios inicial, tenemos un servidor FTP en el puerto 21 cuyo inicio de sesión es anónimo. Vamos a crear un archivo PHP malicioso y a cargarlo en el servidor FTP.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FPASnzpxd2J1lwIfAowtH%2Fimage.png?alt=media&#x26;token=2ada52a5-3339-4aff-8a36-465c8956f186" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FswcD0YqaBJEQmMPpaSHj%2Fimage.png?alt=media&#x26;token=46673443-1f1e-470b-a9f9-ae7e15252e1c" alt=""><figcaption></figcaption></figure>

Ahora nos vamos al navegador a ejecutar el archivo cargado.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F512BkcOI28b8CLPTbOeM%2Fimage.png?alt=media&#x26;token=a46ce38f-e6a6-4ad9-8845-5b71e2c8da3b" alt=""><figcaption></figcaption></figure>

Hemos pasado de LFI a RCE. Vamos a aprovechar esto para cargar una reverse shell maliciosa en PHP. El proceso de carga es igual que el archivo anterior. Además debemos poner a la escucha un oyente nc en el puerto seleccionado en la reverse shell.&#x20;

```
nc -lnvp 1337
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FGO6yYVOBzc4D18dW9wrJ%2Fimage.png?alt=media&#x26;token=fe966c28-ae09-4ce3-8ef2-deff9c6e0fbc" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FavMZrk93Jm0rnn97qaaE%2Fimage.png?alt=media&#x26;token=8af31713-b0f0-4cc4-8c63-0f55b94a5cc8" alt=""><figcaption></figcaption></figure>

Ya tenemos conexión en la máquina objetivo como www-data. El siguiente paso será buscar la flag local.txt.

```
 find / -name local.txt
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FI96gLkuorckBam85Kibj%2Fimage.png?alt=media&#x26;token=a2f03411-6837-46e4-a8e0-1bf0128f21fa" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FITweK9WepId5lmPumJSX%2Fimage.png?alt=media&#x26;token=3363d6a8-6be2-4011-b70c-638dee941be6" alt=""><figcaption></figcaption></figure>

### Elevación de privilegios

Al revisar el directorio del usuario /home/tom, encontramos un archivo rootshell.c y un archivo de compilación rootshell que posee permisos SUID.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FrM1LStIRaQuDwtE8EWqI%2Fimage.png?alt=media&#x26;token=68b2229e-97d4-4582-b614-e2747391d79c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fm25VVV4r8IvcSeuSubD9%2Fimage.png?alt=media&#x26;token=0d96ec56-b0b0-43c5-92c2-0267c483c3a6" alt=""><figcaption></figcaption></figure>

Vamos a ver el código fuente de esta aplicación

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fj4vzDkLC0p7PU2OKAUrs%2Fimage.png?alt=media&#x26;token=6bfc876d-3399-4734-a793-2deb87fb4216" alt=""><figcaption></figcaption></figure>

Según el código, se ejecutará  whoami y verificará si el usuario actual es "tom". En caso afirmativo, escalará el privilegio al privilegio más alto. Por el  contrario, en caso de no ser "tom", solo imprimirá el ID de usuario del usuario actual.

Creamos un archivo whoami en el directorio /tmp y damos permisos de ejecución.

```
echo "printf "tom"" > whoami 
chmod +x whoami
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FL6YpgK00C1EIFqSlcuOP%2Fimage.png?alt=media&#x26;token=cae8e1b8-486e-4613-9b20-94a326c6d02b" alt=""><figcaption></figcaption></figure>

Cambiamos el directorio /tmp de la ruta del sistema de destino, y verificamos que el cambio se ha realizado correctamente.

```
export PATH=/tmp:$PATH
echo $PATH
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F1jlU3jTusK2FppDrLB1C%2Fimage.png?alt=media&#x26;token=f5519c6d-604e-4b3a-9626-feeee05bfec8" alt=""><figcaption></figcaption></figure>

Ejecutamos "rootshell"

```
 cd /home/tom
 ./rootshell
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F5g4oC3WN3vtODfWZ5DOY%2Fimage.png?alt=media&#x26;token=451f6d5b-7998-47ca-bb77-2f1dad368f17" alt=""><figcaption></figcaption></figure>

Después de ejecutar "rootshell", obtenemos acceso a la máquina como usuario "root". Solo quedará buscar la flag para completar este CTF.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FMX0JakQ2gk43O3NpsLWy%2Fimage.png?alt=media&#x26;token=fa87b511-f85f-44f9-a571-148fbaab7832" alt=""><figcaption></figcaption></figure>

{% embed url="<https://youtu.be/wbGwRcxnIjs>" %}
