
Exploit de prueba de concepto en Go para CVE-2025-14847 (MongoBleed), una vulnerabilidad de divulgación de memoria de MongoDB. Crea documentos BSON malformados para filtrar memoria del servidor no inicializada a través de mensajes de error.
Este repositorio contiene un exploit de prueba de concepto en Go para CVE-2025-14847, una vulnerabilidad de divulgación de memoria en MongoDB comúnmente conocida como Mongobleed.
Esta PoC es una reimplementación en Go del exploit original en Python de Joe Desimone, disponible aquí:
https://github.com/joe-desimone/mongobleed
El exploit aprovecha un fallo en la descompresión zlib y el análisis BSON para filtrar memoria no inicializada de un servidor MongoDB vulnerable.
Lea la publicación del blog - https://saereya.github.io/posts/mongobleed-cve-2025-14847/
CVE-2025-14847 es causada por un manejo inadecuado de mensajes OP_MSG comprimidos en MongoDB. Al elaborar un documento BSON malformado con una longitud de documento inflada y envolverlo en un mensaje OP_COMPRESSED, el servidor puede leer más allá de los límites del búfer descomprimido.
Esto puede hacer que MongoDB interprete la memoria restante como nombres de campos BSON, que luego se reflejan en mensajes de error. Repitiendo este proceso en diferentes desplazamientos se pueden filtrar fragmentos de la memoria del servidor.
Esta PoC:
OP_COMPRESSED de MongoDBLos datos filtrados se extraen de cadenas de error como:
field name '...'type <n>Esta vulnerabilidad afecta a versiones específicas de MongoDB anteriores al parche oficial.
Consulte los avisos de seguridad de MongoDB para conocer los rangos de versiones exactos.
Compilar:
go build -o mongobleed
Ejecutar:
./mongobleed --host <target> --port 27017
Banderas opcionales: --min-offset: Longitud inicial del documento BSON (predeterminado: 20) --max-offset: Longitud final del documento BSON (predeterminado: 8192)
[*] MongoBleed - CVE-2025-14847
[*] Targetting localhost:27017
[*] Offset: 20 -> 8192
[+] offset= 117 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 119 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 120 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 121 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
Este código se proporciona únicamente con fines educativos y de investigación.
No ejecute esta herramienta contra sistemas que no posea o para los que no tenga permiso explícito para realizar pruebas. El uso no autorizado puede ser ilegal y poco ético.