ACADEMY WRITE UP
Hola!
El dia de hoy resolveremos la máquina academy de hack the box, lanzada hace no más de 2 días. Tiene una dificultad fácil en la intrusión y media en la escalada de privilegios.
El vector de ataque será el siguiente: Nos registramos como usuarios en el panel de registro que tiene la máquina, interceptamos la petición con burpsuit y cambiaremos nuestro rol de usuario a administrador, (de 0 a 1).
Una vez nos registramos y veremos una nota del desarrollador, gracias al cual descubrimos un nuevo host.
En ese nuevo host veremos una APP_KEY mediante la cual podremos expotar con el exploit: unix/http/laravel_token_unserialize_exec
Una vez obtenida la shell, encontraremos un archivo con una contraseña de la base de datos academy, la cual coincide con otro usuario de la propia máquina.
Una vez logeados con ese usuario (cry0l1t) podremos conectarnos con SSH y obtener la Flag
Comenzaremos en el panel de registro:
El dia de hoy resolveremos la máquina academy de hack the box, lanzada hace no más de 2 días. Tiene una dificultad fácil en la intrusión y media en la escalada de privilegios.
El vector de ataque será el siguiente: Nos registramos como usuarios en el panel de registro que tiene la máquina, interceptamos la petición con burpsuit y cambiaremos nuestro rol de usuario a administrador, (de 0 a 1).
Una vez nos registramos y veremos una nota del desarrollador, gracias al cual descubrimos un nuevo host.
En ese nuevo host veremos una APP_KEY mediante la cual podremos expotar con el exploit: unix/http/laravel_token_unserialize_exec
Una vez obtenida la shell, encontraremos un archivo con una contraseña de la base de datos academy, la cual coincide con otro usuario de la propia máquina.
Una vez logeados con ese usuario (cry0l1t) podremos conectarnos con SSH y obtener la Flag
Comenzaremos en el panel de registro:
USER.TXT
Antes de enviar la petición, la interceptamos con burpsuit y analizamos el contenido.
Vemos que el roleid está a 0, lo cambiamos a uno y le damos a Froward. Gracias a esto, en vez de registrarnos como usuarios estándar nos estaremos registrando como administradores.
Nos logueamos en el panel de login de /admin.php con el usuario previamente creado y si todo ha ido correctamente, entraremos en esta sección de la máquina.
Aquí, podemos observar notas de el supuesto desarrollador, el cual redacta que hay una falla pendiente en el host dev-staging-01.academy.htb
Para comprobar el contenido de este nuevo host lo incluiremos en /etc/hosts
Al entrar en este host veremos lo siguiente:
Para comprobar el contenido de este nuevo host lo incluiremos en /etc/hosts
Al entrar en este host veremos lo siguiente:
Vemos que está construido con laravel y Una APP_KEY, la cual la podemos usar para explotar el servidor.
Abrimos Metaesploit y mediante el exploit unix/http/laravel_token_unserialize_exec y la APP_KEY dBLUaMuZz7Iq06XtL/Xnz/90Ejq+DEEynggqubHWFj0= procederemos a explotarlo.
Abrimos Metaesploit y mediante el exploit unix/http/laravel_token_unserialize_exec y la APP_KEY dBLUaMuZz7Iq06XtL/Xnz/90Ejq+DEEynggqubHWFj0= procederemos a explotarlo.
¡Conseguimos un shell!
Aquí os dejaré un tip el cual me habría ahorrado un dolor de cabeza…
La máquina no tiene instalado python2, solo tiene python3 por lo tanto el comando que deberemos ejecutar es el siguiente: python3 -c ‘import pty;pty.spawn(“/bin/bash”)’;
Aquí os dejaré un tip el cual me habría ahorrado un dolor de cabeza…
La máquina no tiene instalado python2, solo tiene python3 por lo tanto el comando que deberemos ejecutar es el siguiente: python3 -c ‘import pty;pty.spawn(“/bin/bash”)’;
Una vez lograda una shell limpia, procederemos a rebuscar entre archivos y directorios cositas interesantes.
Tras una intensa búsqueda encontramos el archivo .env, haremos un cat para ver su interior y nos encontramos con una password que hace referencia a la base de datos mysql.
Tras una intensa búsqueda encontramos el archivo .env, haremos un cat para ver su interior y nos encontramos con una password que hace referencia a la base de datos mysql.
Aquí logramos todos los datos de mysql, una password de la propia base de datos (DB_PASSWORD=mySup3rP4s5w0rd!!.
En el directorio /home con el usuario www-data nos encontramos con estos 6 usuarios. Probamos uno a uno la password anteriormente encontrada y.. Bingo!
Vemos que al usuario cry0l1t3 le coincide la credencial
Nos conectamos con SSH con nuestra propia máquina local (Innecesario) y en el directorio /home de dicho usuario nos encontraremos con nuestra Flag!
User Flag : aabc22802c194832f0b2a79ecf75c8f5
root.TXT
Ahora lograremos la flag de el usuario root en la maquina academy. Antes de proceder con la explotación haremos un breve resumen para recordar donde lo dejamos.
Primero logramos registrarnos en la pagina de registro como administradores cambiando el role ID de 0 a 1, interceptando la petición con burpsuite. Una vez logeados como administradores, entramos con nuestro usuario (administrador) en /admin.php y veremos un panel en el que el desarrollador de la maquina dejo unas notas en las cuales ponía que estaba pendiente resolver un error en dev-staging-01.academy.htb
Una vez entramos a dev-staging-01.academy.htb vemos una APP-KEY, la cual usaremos para explotar el servidor mediante metaesploit.
Una vez ejecutado el exploit lograremos acceso a la maquina como www-data y mediante la lectura de un archivo llamado .env lograremos una contraseña que coincidira con el usuario cry0l1t3.
Con este usuario nos quedamos en la parte 1 y este post lo que haremos será:
Saltar de el usuario cry0l1t3 a el usuario mrb3n y despues saltaremos a root.
En el directorio /var/log/audit nos encontraremos varios audit.log.X los cuales podremos grepear por varios parametros, como por ejemplo grep “data” o grep “uid=1002”
Primero logramos registrarnos en la pagina de registro como administradores cambiando el role ID de 0 a 1, interceptando la petición con burpsuite. Una vez logeados como administradores, entramos con nuestro usuario (administrador) en /admin.php y veremos un panel en el que el desarrollador de la maquina dejo unas notas en las cuales ponía que estaba pendiente resolver un error en dev-staging-01.academy.htb
Una vez entramos a dev-staging-01.academy.htb vemos una APP-KEY, la cual usaremos para explotar el servidor mediante metaesploit.
Una vez ejecutado el exploit lograremos acceso a la maquina como www-data y mediante la lectura de un archivo llamado .env lograremos una contraseña que coincidira con el usuario cry0l1t3.
Con este usuario nos quedamos en la parte 1 y este post lo que haremos será:
Saltar de el usuario cry0l1t3 a el usuario mrb3n y despues saltaremos a root.
En el directorio /var/log/audit nos encontraremos varios audit.log.X los cuales podremos grepear por varios parametros, como por ejemplo grep “data” o grep “uid=1002”
El comando quedaría así: cat audit.log.3 | grep “uid=1002” | more
Esto nos sacará el historial de comandos del usuario cry0l1t3 en hexadecimal. Traduciendo esto a texto legible nos saldrán estos comandos:
- 7375206D7262336E0A → su mrb3n
- 6D7262336E5F41634064336D79210A → mrb3n_Ac@d3my!
- 77686F616D690A → whoami
- 657869740A → exit
- 2F62696E2F62617368202D690A → /bin/bash -i
- 6973746F72790D686973746F72790D657869740D → istory history exit
Con esto, en efecto lograremos la password del usuario mrb3n que será mrb3n_Ac@d3my!
Una vez nos logeamos con el usuario mrb3n comenzaremos la escalada de privilegios para llegar a root.
Primero ejecutaremos el comando sudo -l y veremos que este usuario tiene privilegios en el directorio /usr/bin/composer y siguiendo esta guia de escalada de privilegios tenemos dos opciones para lograr acceso a root https://gtfobins.github.io/gtfobins/composer/
Una vez nos logeamos con el usuario mrb3n comenzaremos la escalada de privilegios para llegar a root.
Primero ejecutaremos el comando sudo -l y veremos que este usuario tiene privilegios en el directorio /usr/bin/composer y siguiendo esta guia de escalada de privilegios tenemos dos opciones para lograr acceso a root https://gtfobins.github.io/gtfobins/composer/
Para la escalada de privilegios tendremos dos posibles opciones, las dos usando /usr/bin/composer puesto que nuestro usuario tiene privilegios.
OPCIÓN1 (iMPORTANDO NUESTRAS CALVES SSH)
Comenzaremos por la opción complicada para poder entender en profundidad como es el proceso.
Este binario nos permitiria escalar privilegios ejecutando un script, para la opción 1 modificaremos este script para nosotros nos creemos una clave publica, la peguemos en el directorio /root/.ssh/authorized_keys y asi podamos conectarnos mediante SSH.
Primero crearemos unas claves SSH en nuestra maquina:
Primero crearemos unas claves SSH en nuestra maquina:
Copiaremos la clave publica:
Ejecutaremos la primera linea del binario en la maquina objetivo:
TF=$(mktemp -d)
Despues de esto, crearemos un archivo con nano llamado composer.json
nano $TF/composer.json
Y en este archivo escribiremos el siguiente script, lo que hace es pegar nuestra clave publica en el directorio de la maquina objetivo /root/.ssh/authorized_keys para que luego, desde nuestra maquina y con nuestra clave privada podamos conectarnos sin ningun problema.
{"scripts":{"SSH":"echo 'ssh-rsa XXXCLAVESSHXXXX=' >> /root/.ssh/authorized_keys"}}
Una vez guardado el script, ejecutaremos la tercera y ultima linea del binario, sustituyendo la (X)por el nombre que hemos puesto e nuestro sctipt (SSH)
sudo composer --working-dir=$TF run-script SSH
Una vez ejecutado nuestro script, podremos conectarnos mediante SSH usando nuestra clave privada.
Y tendremos la flag de root :)
OPCIÓN 2
Para la opción 2 simplemente pegaremos linea por linea el binario y obtendremos una shell como root.
1TF=$(mktemp -d)
1echo '{"scripts":{"x":"/bin/sh -i 0<&3 1>&3 2>&3"}}' >$TF/composer.json
1sudo composer --working-dir=$TF run-script x
1echo '{"scripts":{"x":"/bin/sh -i 0<&3 1>&3 2>&3"}}' >$TF/composer.json
1sudo composer --working-dir=$TF run-script x
Y así obtendremos de nuevo una shell como root.