> 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

<figure><img src="/files/Qku4cOyNgbbAZsshR2Ir" 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="/files/S1VeXqylIA6onpzHwkuz" 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="/files/eRDiOUPbFFjN7mBJ0krX" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/85n31CsCA9BgQelKY8WM" 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="/files/KULDNWZBaY4tmJay1tnM" 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="/files/ttVOre3TrI0cxc51cGOm" 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="/files/eyn4n2VUazF8cpECkxJb" 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="/files/sUz17Jo6yQCa39RwNmTo" alt=""><figcaption></figcaption></figure>

#### FTP

Descargamos el archivo.&#x20;

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

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

Vamos a ver el contenido del archivo.

<figure><img src="/files/of5BrLLw6sNuGdFUa9oh" 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="/files/A170US7JEmKvpz2f0m1g" 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="/files/G5Ic9mRmt7It0LhTYILR" alt=""><figcaption></figcaption></figure>

Accedemos al panel de administrador.

<figure><img src="/files/rsjNAozFRQHqDaHw07no" 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="/files/V68HL1d1Mdfg94kGpVJe" 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="/files/NH23p5QkgftcZrFacQtM" 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="/files/RqrJap41MNTEAH0IRWU9" 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="/files/UN3ROZtd6LHKRDM2I269" 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="/files/k5wb6q9v8jEDWeXGGxjH" 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="/files/anzg7lbELeaHsXHIT4h8" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/3BJhSOdEJz32E5hqGpeI" 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="/files/rgzYkvFUitd1r44rBevX" alt=""><figcaption></figcaption></figure>

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