Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
MongoBleed-exploit — MongoBleed (CVE-2025-14847) Lab & PoC : Un environnement éducatif complet pour reproduire la fuite de mémoire critique non authentifiée dans MongoDB. Comprend un conteneur Docker vulnérable avec amorçage multi-bases de données (PII, clés API) et un exploit Python pour démontrer l'extraction de données. Idéal pour la recherche en sécurité et la sensibilisation. Analyse 1 jour. | Kitploit
Outils/GitHubGitHub/eljoamy/mongobleed-exploit
Criminalistique MémoireAnalyse des VulnérabilitésExploitationCTFTests d'IntrusionApprentissage et ÉducationSécurité des Bases de DonnéesLabs et Pratique

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 →

À propos

MongoBleed (CVE-2025-14847) Lab & PoC : Un environnement éducatif complet pour reproduire la fuite de mémoire critique non authentifiée dans MongoDB. Comprend un conteneur Docker vulnérable avec amorçage multi-bases de données (PII, clés API) et un exploit Python pour démontrer l'extraction de données. Idéal pour la recherche en sécurité et la sensibilisation. Analyse 1 jour.

GitHub
eljoamy/mongobleed-exploit

MongoBleed-exploit

Voir le dépôt
20il y a 8 moisPas encore vérifié
Partager

CVE-2025-14847: Laboratoire MongoBleed

Python      MongoDB      Docker

Table des matières

  1. Introduction
  2. Détails de la vulnérabilité
    • Fonctionnement
  3. Impact
  4. Architecture du laboratoire
  5. Prérequis
  6. Installation et utilisation
    • 1. Démarrer l'environnement
    • 2. Installer les dépendances
    • 3. Vérifier la configuration du laboratoire (Optionnel)
    • 4. Exécuter l'exploit
  7. Déroulement de l'exploitation
  8. Remédiation
  9. Licence
  10. Avertissement
  11. Références
  12. Auteur

Introduction

Ce laboratoire est conçu pour reproduire et analyser MongoBleed (CVE-2025-14847), une vulnérabilité critique dans MongoDB. Cette faille permet à des attaquants non authentifiés de lire des données sensibles depuis la mémoire du serveur en raison d'une gestion incorrecte des messages compressés.

L'environnement comprend une instance MongoDB vulnérable remplie de données sensibles factices (PII, clés API, enregistrements financiers) pour démontrer la gravité de la fuite.

Détails de la vulnérabilité

ID CVE : CVE-2025-14847
Nom : MongoBleed
Composant : Wire Protocol (OP_COMPRESSED)
Versions vulnérables : MongoDB 6.0.x < 6.0.27, 7.0.x < 7.0.28, 8.0.x < 8.0.17 (et autres) URL : Cliquez dessus -> NVD CVE-2025-14847

Fonctionnement

La vulnérabilité réside dans la manière dont MongoDB gère les messages OP_COMPRESSED utilisant l'algorithme de compression zlib.

  1. Inadéquation de taille : Un attaquant envoie un message compressé où le champ uncompressed_size dans l'en-tête est intentionnellement défini à une valeur bien supérieure à la taille réelle des données décompressées.
  2. Allocation mémoire : Le serveur alloue un tampon mémoire basé sur cette uncompressed_size gonflée.
  3. Écriture partielle : Le décompresseur zlib écrit la charge utile réelle (petite) au début de ce tampon. Le reste du tampon reste non initialisé, contenant des données résiduelles d'opérations précédentes (artefacts RAM).
  4. La fuite : Lorsque le serveur tente d'analyser ce tampon comme un document BSON, il lit au-delà des données valides dans la mémoire non initialisée. Si l'analyseur rencontre une erreur (ce qui est probable), il peut renvoyer les données « erronées » dans le message d'erreur au client.

Impact

  • Accès non authentifié : L'attaque ne nécessite pas d'identifiants valides.
  • Divulgation d'informations : Les attaquants peuvent extraire tout ce qui se trouve actuellement dans la mémoire du processus MongoDB, y compris :
    • Identifiants d'authentification (mots de passe en clair ou hachés).
    • Données d'autres bases de données/collections.
    • Configuration du serveur et variables d'environnement.
    • Jetons de session actifs.

Architecture du laboratoire

Le laboratoire se compose de :

  • Service vulnérable : MongoDB 6.0.10 (conteneur Docker).
  • Authentification : Activée (admin / secretpassword).
  • Remplissage de données : Un script d'initialisation (init-mongo.js) qui remplit 3 bases de données distinctes pour simuler un environnement SaaS d'infrastructure cloud réel :
    • dbmongotesting : Données d'infrastructure de base.
      • compute_instances : Métadonnées sensibles (scripts User Data, clés API).
      • deployment_secrets : Cibles de grande valeur (jetons K8s, clés CI/CD, webhooks Slack).
    • identity_provider : Gestion des identités utilisateur.
      • users : Identifiants utilisateur, hachages de mots de passe (Argon2) et codes de secours MFA (divulgués en texte clair).
    • system_audit : Journaux et surveillance.
      • query_logs : Contient des requêtes historiques, certaines incluant des identifiants divulgués (par exemple, clés AWS).
  • Exploit : Un script Python (exploit.py) implémentant l'attaque par protocole rétro-conçue.

Prérequis

  • Docker
  • Docker Compose
  • Python 3

Installation et utilisation

1. Démarrer l'environnement

Lancez le conteneur vulnérable. Cela créera automatiquement les bases de données et les remplira avec des données.

docker-compose up -d

Attendez environ 10 à 15 secondes pour que la base de données s'initialise et charge les données.

Remarque : Si vous avez déjà exécuté ce laboratoire auparavant, assurez-vous de réinitialiser le volume pour charger la dernière structure de données :

docker-compose down -v
docker-compose up -d

2. Installer les dépendances

Vous pouvez installer les dépendances requises en utilisant pip avec le fichier requirements.txt legacy ou le fichier moderne pyproject.toml.

Option A : Utilisation de requirements.txt (Standard)

pip install -r requirements.txt

Option B : Utilisation de pyproject.toml (Moderne) Cela installera le projet et ses dépendances dans l'environnement actuel.

pip install .

3. Vérifier la configuration du laboratoire (Optionnel)

Nous avons fourni un script de vérification pour s'assurer que la base de données est joignable et que les données ont été correctement insérées.

python verify_lab.py

Ce script utilise les identifiants admin pour vérifier l'existence de bases de données comme sensitive_db, legacy_crm, etc.

4. Exécuter l'exploit

Exécutez le script Python pour attaquer le serveur. Aucun identifiant n'est requis pour cette étape, démontrant la nature non authentifiée de la vulnérabilité.

python exploit.py --host localhost --port 27017 --min 100 --max 5000

Déroulement de l'exploitation

Le script effectue les étapes suivantes :

  1. Construit une charge utile BSON malveillante.
  2. La compresse et l'enveloppe dans un en-tête OP_COMPRESSED avec une taille gonflée falsifiée.
  3. L'envoie au serveur cible.
  4. Écoute les réponses d'erreur.
  5. Affiche tout texte lisible trouvé dans la réponse du serveur (provenant de la fuite mémoire).

Sortie attendue : Vous devriez voir une sortie indiquant des fuites trouvées à différents offsets, suivie d'un résumé des secrets détectés.

[*] MongoBleed Exploit (Custom Implementation)
[*] Target: localhost:27017
[*] Scanning memory offsets 100 to 5000...
[+] Offset 120  | ... dbmongotesting ... compute_instances ...
[+] Offset 145  | ... field name 'AKIAIOSFODNN7EXAMPLE' is not valid ... [!] FOUND AKIA
[+] Offset 210  | ... "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik16UTBOVFZ... [!] FOUND token

[*] Scan completed in 12.45s
[*] Total bytes leaked: 4502
[*] Unique fragments: 156

[*] Secrets Summary:
[!] Found pattern: AKIA
[!] Found pattern: token
[!] Found pattern: password

Remédiation

Pour corriger cette vulnérabilité dans les environnements de production :

  1. Mise à jour : Mettez à jour MongoDB vers une version corrigée (par exemple, 6.0.27+, 7.0.28+, 8.0.17+).
  2. Restrictions réseau : Assurez-vous que les ports MongoDB (27017) ne sont pas exposés à l'internet public.
Télécharger l’outil