Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
mongobleed — CVE-2025-14847 explicación y laboratorio | Kitploit
Herramientas/GitHubGitHub/adolfbharath/mongobleed
Análisis de VulnerabilidadesSeguridad de RedesCriptografíaAprendizaje y EducaciónSeguridad de Bases de DatosLabs y Práctica
GitHubadolfbharath/mongobleed

mongobleed

CVE-2025-14847 explicación y laboratorio

Ver Repositorio
1hace 7 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Laboratorio de Fuga de Compresión de MongoDB (Seguro, Educativo)

CVE de referencia : CVE-2025-14847

Este repositorio es un laboratorio educativo que demuestra el concepto detrás de una clase de problemas a menudo descritos como “compression framing / divulgación de memoria por metadatos de tamaño” en protocolos de cable de bases de datos.

Está escrito para apoyar la comprensión defensiva: cómo se negocia y encuadra la compresión de red de MongoDB, por qué los campos de tamaño importan, y cómo los analizadores robustos evitan la exposición no intencionada de memoria.

Nota sobre la referencia CVE: Este laboratorio está enmarcado en torno a la idea referenciada como CVE-2025-14847 . Este repositorio no valida, reproduce o explota un error específico de un proveedor ni afirma que alguna versión particular de MongoDB esté afectada. Se centra en el modo de fallo general (metadatos de tamaño no coincidentes alrededor de cargas útiles comprimidas) y las mitigaciones.

Estado de versiones (vulnerable vs parcheado)

Este repositorio no incluye (y no debe usarse como) evidencia de qué versiones de MongoDB son vulnerables o están parcheadas para algún CVE específico.

Para documentar versiones “vulnerables” vs “parcheadas” correctamente en un informe, usa un aviso oficial del proveedor / notas de la versión para el CVE y cítalo.

Pasos prácticos para verificar lo que estás ejecutando:

  • Versión del contenedor Docker:
    • docker compose exec mongodb mongod --version
    • o docker compose exec mongodb mongosh --quiet --eval "db.version()"
  • Versión de instalación local:
    • mongod --version
    • mongosh --quiet --eval "db.version()"

Si compartes el enlace del aviso que estás usando, puedo formatear una tabla clara “Afectadas / Corregidas” en el README sin adivinar.

Qué es la vulnerabilidad (conceptualmente)

Este laboratorio ilustra un modo de fallo de encuadre de compresión / discrepancia de metadatos de tamaño:

  • Los mensajes de MongoDB tienen prefijo de longitud. Con compresión de red, un envoltorio OP_COMPRESSED añade más campos de tamaño (longitud del mensaje exterior, tamaño descomprimido declarado y la longitud del mensaje interior).
  • Si una implementación confía en cualquiera de estos campos de tamaño sin una validación estricta, puede manejar incorrectamente los búferes durante la descompresión o el análisis.
  • En implementaciones con errores, eso puede llevar a lecturas fuera de límites o a devolver bytes de búfer no inicializados, que es una forma en que puede ocurrir la “divulgación de memoria”.

Consulta protocol_overview.md para el recorrido detallado del encuadre.

Aviso ético

  • Este proyecto es no explotable por diseño.
  • No incluye lógica armada, código de explotación o técnicas destinadas a comprometer sistemas.
  • Solo debe ejecutarse contra el contenedor Docker local proporcionado aquí.
  • No apuntes este código a sistemas que no poseas o para los que no tengas permiso explícito para probar.

Objetivos de aprendizaje

Al final del laboratorio, deberías ser capaz de:

  • Explicar cómo funciona el encuadre del protocolo de cable de MongoDB a alto nivel.
  • Describir cómo se negocia y aplica la compresión de red zlib.
  • Entender cómo los metadatos de longitud/tamaño malformados podrían conceptualmente llevar a una exposición de memoria en una implementación con errores.
  • Identificar mitigaciones prácticas: parcheo, endurecimiento de configuración y detección de red.

Qué hace (y no hace) este repositorio

Sí hace:

  • Inicia MongoDB en Docker con compresión zlib habilitada.
  • Usa un pequeño cliente Python original para:
    • Enviar un hello sin comprimir que incluye compression: ["zlib"]
    • Enviar un mensaje OP_COMPRESSED correctamente encuadrado usando zlib
    • Registrar los tamaños sin comprimir vs comprimidos y un resumen de las respuestas del servidor
  • Incluye una demostración local de “analizador de juguete” que muestra cómo un analizador defensivo rechaza metadatos de tamaño no coincidentes.

NO hace:

  • Crear paquetes maliciosos para explotación en el mundo real.
  • Intentar elusión de autenticación.
  • Intentar lectura de memoria arbitraria.

Contenido del repositorio

  • docker-compose.yml – Ejecuta un contenedor MongoDB con compresión zlib habilitada y exposición solo en localhost.
  • protocol_overview.md – Protocolo de cable + BSON + flujo de trabajo de compresión + explicación conceptual de la vulnerabilidad.
  • mitigation.md – Guía de defensa: parcheo, configuración e ideas de detección.
  • lab_probe.py – Sonda original que negocia compresión y registra tamaños de mensaje de forma segura.

Cómo ejecutar el laboratorio de forma segura

1) Requisitos previos

  • Docker Desktop (o motor Docker compatible)
  • Python 3.10+ (recomendado)

2) Iniciar MongoDB

Desde el directorio de este repositorio:

root@kitploit:~
docker compose up -d

Confirma que se esté ejecutando:

root@kitploit:~
docker compose ps

3) Ejecutar la sonda

root@kitploit:~
python .\lab_probe.py

Salida esperada:

  • Imprime los compresores negociados desde el primer hello
  • Imprime los tamaños de solicitud/respuesta
  • Envía un hello comprimido y registra los tamaños de mensaje comprimido y descomprimido

4) Ejecutar la demo de juguete (sin red)

root@kitploit:~
python .\lab_probe.py --toy-demo

Esto ejecuta solo verificaciones de análisis locales para ilustrar por qué la validación de tamaño es importante.

5) Apagar

root@kitploit:~
docker compose down

Notas de seguridad

  • El contenedor está vinculado a 127.0.0.1:27017 en el host.
  • No hay comportamiento de explotación presente.
  • La sonda aplica límites conservadores (por ejemplo, tamaño máximo de mensaje) y valida todos los campos de longitud.
Descargar herramienta