# 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>" %}


---

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