> 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/proving-grounds/potato.md).

# Potato

Write-up de la máquina Potato de Proving Grounds #writeup #walkthrough

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FIImC5axmIVpbGYYcyz4p%2FSQL%20injection%20vulnerability%20in%20WHERE%20clause%20allowing%20retrieval%20of%20hidden%20data%20(2).png?alt=media&amp;token=abbfd4dc-ea50-43e3-99b1-2768673b535f" alt=""><figcaption></figcaption></figure>

### Enumeración

#### Servicios abiertos

Como siempre, comenzamos la resolución del CTF enumerando los servicios que tiene la máquina abiertos.&#x20;

```
nmap -p- --open --min-rate 2000 -Pn -n -vvv 192.168.236.101
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Ft7V5MmmJSQiVInpBDbHQ%2Fimage.png?alt=media&amp;token=fb06c499-11ce-4127-90df-96989fc4419d" alt=""><figcaption></figcaption></figure>

Tres puertos abiertos: 22, 80 y 2112. Seguimos con el escaneo profundo de estos servicios.&#x20;

```
nmap -p22,80,2112 -sVC -vvv 192.168.236.101
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F51R6S4Yq37HRcJcDR4py%2Fimage.png?alt=media&amp;token=0bcbb3e2-ad0d-456f-8957-5b3ee666ebcd" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FNk9WdVvITpL4aILnkm0B%2Fimage.png?alt=media&amp;token=b9c365c7-4536-4f26-91b4-5d0c81caeb22" alt=""><figcaption></figcaption></figure>

La información más interesando que hemos recabado del escaneo de servicios es el inicio anónimo de sesión en el servidor FTP, que contiene un archivo de backup.&#x20;

#### Enumeración Web

Inspeccionamos el contenido del puerto 80.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F87sNlEiV41m2qtNnD1FI%2Fimage.png?alt=media&amp;token=8dae739c-1502-43f1-945d-57f3cb35ba25" alt=""><figcaption></figcaption></figure>

Nada destacable. Vamos con la enumeración de directorios.

```
feroxbuster --url http://192.168.236.101 -s 200,301
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FjIErEo7bVSlHx1KhLdU5%2Fimage.png?alt=media&amp;token=cfd2db5b-75df-42b6-82a2-a5f271e3b9c2" alt=""><figcaption></figcaption></figure>

Existe un directorio /admin y /admin/logs en el sitio Web. Vamos a ver el contenido de ambos directorios.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FVoy6eFolK4VwxAZB0bUq%2Fimage.png?alt=media&amp;token=e91f9750-09a2-43d0-9694-8f431a21fd67" alt=""><figcaption></figcaption></figure>

Probamos múltiples credenciales por defecto pero no obtenemos resultados.

Dentro del directorio /admin/logs tenemos la presencia de tres archivos logs, pero que tampoco contiene información de interés.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FuA6AhDMbEBXkU3GvJxBo%2Fimage.png?alt=media&amp;token=2d0b2a75-7ba2-4154-99e4-28c7fba02feb" alt=""><figcaption></figcaption></figure>

#### FTP

Descargamos el archivo.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FPgUcphPV0w9WJ20NJJPa%2Fimage.png?alt=media&amp;token=a7119b26-1bf8-4d5f-84d6-2586498fd31b" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FrNLxnqAYU188iupyRKCT%2Fimage.png?alt=media&amp;token=24adbfbf-113c-4b0c-b82b-b0b527b8823a" alt=""><figcaption></figcaption></figure>

Vamos a ver el contenido del archivo.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FNuoqNRlBYLNmeOd3xVCu%2Fimage.png?alt=media&amp;token=4fafd5c4-5e79-450c-bc0e-76bc0c7e3b21" alt=""><figcaption></figcaption></figure>

### Explotación

El script usa la función strcmp para comparar el nombre de usuario proporcionado con admin y la contraseña proporcionada con $pass. Podemos tratar de realizar un [bypass de "string compare"](https://www.doyler.net/security-not-included/bypassing-php-strcmp-abctf2016) para la contraseña. Capturamos la petición con Burp.

&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F0X2fcCaVfaXfBVfZqHy5%2Fimage.png?alt=media&amp;token=b2d1f731-092b-40b6-b9a1-8a4524c9cedf" alt=""><figcaption></figcaption></figure>

Después de iniciar sesión, vemos un mensaje que nos dice que visitemos la página del panel.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FXuKuMBDCWiCtOINRU8Sh%2Fimage.png?alt=media&amp;token=4c177d62-dde0-41c8-8440-b0229cc145c1" alt=""><figcaption></figcaption></figure>

Accedemos al panel de administrador.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FmTxMJ3Ed79ugXKCu0fzs%2Fimage.png?alt=media&amp;token=de3666e3-1753-49e5-b77c-c9629a829aed" alt=""><figcaption></figcaption></figure>

Los archivos logs son los mismo que enumerábamos al comienzo del writeup. Lo más destacable, un posible punto vulnerable a LFI en la carga de los archivos logs.

Volvemos a capturar la petición de un archivo de log con Burp y tratamos de buscar el archivo /etc/passwd.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FL2we0u4HMmLGfYolhJ8y%2Fimage.png?alt=media&amp;token=db41cc21-d969-48a9-bfff-51ebb5219b15" alt=""><figcaption></figcaption></figure>

Obtenemos el hash del usuario "webadmin". Vamos a hacer dos cosas, primero descifrarlo con "john" y posteriormente, recordando que la máquina tiene abierto el puerto22, tratar de iniciar sesión con el usuario "webadmin" y la contraseña descifrada.

Desciframos la contraseña.

```
john --wordlist=/home/elhackeretico/rockyou.txt webadmin 
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fc2huJw6gzlncc4Kmwh7V%2Fimage.png?alt=media&amp;token=50993ab7-0062-4c91-ac8a-00b409d538fa" alt=""><figcaption></figcaption></figure>

Las credenciales son "webadmin:dragon". Vamos a intentar iniciar sesión en la máquina víctima a través del servicio SSH.

```
ssh webadmin@192.168.236.101
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F14dCi6kZEdtBleK3Owww%2Fimage.png?alt=media&amp;token=9c26241a-3714-48ea-bfe0-44b78e3d52c0" alt=""><figcaption></figcaption></figure>

Obtenemos acceso a la víctima con el usuario "webadmin". El siguiente paso, buscar la flag local.txt.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F3etNzd6ZPXgQ1KOYJzYJ%2Fimage.png?alt=media&amp;token=9c7bafc0-9ff0-4fe3-96e0-b2d7b8dcd5c4" alt=""><figcaption></figcaption></figure>

### Elevación de privilegios

Para elevar privilegios, comenzamos enumerando posibilidades que podemos ejecutar como "root" sin password.&#x20;

```
sudo -l
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F1VW34bVws5qMRyTe7Dxv%2Fimage.png?alt=media&amp;token=ead96614-9c0c-49b9-9ee9-50a804a1e6de" alt=""><figcaption></figcaption></figure>

Dentro del directorio "/notes" hay dos archivos, un archivo que borra la pantalla y otro que muestra el comando id. Dentro de este directorio no tenemos permisos de escritura. Como el directorio /notes/ dispone del wildcard \*, podemos ejecutar un archivo con permisos sudo fuera de este directorio. Creamos un archivo privesc.sh en el directorio "/home/webadmin".

```
touch privesc.sh
echo '/bin/sh' > shell.sh
chmod 777 shell.sh
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FVcoWXjJNea6YduHoAQ31%2Fimage.png?alt=media&amp;token=129c8457-7e1b-404d-8aef-e38969fb42f5" alt=""><figcaption></figcaption></figure>

Después de crear el archivo "privesc.sh", vamos a ejecutarlo de la siguiente manera.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FygRhr9Cdp4iLdWE9OtwR%2Fimage.png?alt=media&amp;token=ef06e8c4-396f-4490-ae0a-948abc1d8742" alt=""><figcaption></figcaption></figure>

Ya tenemos privilegios máximos en el objetivo. Solo quedará buscar la flag proof.txt para finalizar.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FzunOBH2NrffWxZ7DMNiW%2Fimage.png?alt=media&amp;token=94e07c0b-6efc-495f-9b0f-9c375d009fb0" alt=""><figcaption></figcaption></figure>

{% embed url="<https://youtu.be/wueEdp-kUC4>" %}
