Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
mongobleed — CVE-2025-14847的解释和实验环境 | Kitploit
工具/GitHubGitHub/adolfbharath/mongobleed
漏洞分析网络安全密码学学习与教育数据库安全实验室与实践
GitHubadolfbharath/mongobleed

mongobleed

CVE-2025-14847的解释和实验环境

查看仓库
148个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

MongoDB 压缩泄露实验(安全、教育性)

参考 CVE : CVE-2025-14847

本仓库是一个教育性实验,用于演示数据库线缆协议中常被描述为“压缩帧/大小元数据内存泄露”的一类问题的概念。

它旨在支持防御性理解:MongoDB 网络压缩如何协商和组帧,大小字段为何重要,以及健壮的解析器如何防止意外的内存暴露。

关于 CVE 参考的说明:本实验围绕被引用为 CVE-2025-14847 的概念框架构建。本仓库并未验证、复现或利用特定供应商的错误,也未声称任何特定 MongoDB 版本受到影响。它侧重于通用故障模式(压缩载荷周围大小元数据不匹配)及缓解措施。

版本状态(易受影响 vs 已修复)

本仓库未包含(也不应被用作)任何特定 CVE 的 MongoDB 版本是易受影响或已修复的证据。

要为报告正确地记录“易受影响”与“已修复”版本,请使用该 CVE 的官方供应商公告/发布说明并进行引用。

验证您正在运行的版本的实际步骤:

  • Docker 容器版本:
    • docker compose exec mongodb mongod --version
    • 或 docker compose exec mongodb mongosh --quiet --eval "db.version()"
  • 主机安装版本:
    • mongod --version
    • mongosh --quiet --eval "db.version()"

如果您分享所使用的公告链接,我可以格式化一个简洁的“受影响/已修复”表格放在自述文件中,无需猜测。

此漏洞的概念

本实验说明了压缩帧/大小元数据不匹配的故障模式:

  • MongoDB 消息带有长度前缀。使用网络压缩时,OP_COMPRESSED 信封增加了更多大小字段(外部消息长度、声明的未压缩大小以及内部消息自身的长度)。
  • 如果实现信任这些大小字段中的任何一个而缺乏严格验证,则可能在解压缩或解析过程中错误处理缓冲区。
  • 在有缺陷的实现中,这可能导致越界读取或返回未初始化的缓冲区字节,这是“内存泄露”可能发生的一种方式。

详见 protocol_overview.md 中的详细帧结构讲解。

道德声明

  • 本项目设计上不可利用。
  • 不包含武器化逻辑、利用代码或旨在破坏系统的技术。
  • 应仅针对此处提供的本地 Docker 容器运行。
  • 请勿将此代码指向您不拥有或缺乏明确测试权限的系统。

学习目标

完成本实验后,您应能够:

  • 解释 MongoDB 线缆协议帧结构的高层工作原理。
  • 描述 zlib 网络压缩如何协商和应用。
  • 理解畸形的长度/大小元数据如何在概念上导致有缺陷实现中的内存暴露。
  • 识别实际缓解措施:打补丁、加固配置和网络检测。

本仓库的功能(和不具备的功能)

它具备以下功能:

  • 在 Docker 中启动 MongoDB,并启用 zlib 压缩。
  • 使用一个小巧的原始 Python 客户端:
    • 发送包含 compression: ["zlib"] 的未压缩 hello 消息
    • 使用 zlib 发送一个正确组帧的 OP_COMPRESSED 消息
    • 记录未压缩与压缩大小以及服务器响应的摘要
  • 包含一个本地“玩具解析器”演示,展示防御性解析器如何拒绝不匹配的大小元数据。

它不具备以下功能:

  • 为实际利用制作恶意数据包。
  • 尝试绕过认证。
  • 尝试读取任意内存。

仓库内容

  • docker-compose.yml – 运行一个启用了 zlib 压缩且仅监听 localhost 的 MongoDB 容器。
  • protocol_overview.md – 线缆协议 + BSON + 压缩工作流程 + 概念性漏洞解释。
  • mitigation.md – 防御指导:打补丁、配置和检测思路。
  • lab_probe.py – 原始探测程序,协商压缩并安全记录消息大小。

如何安全运行实验

1) 前提条件

  • Docker Desktop(或兼容的 Docker 引擎)
  • Python 3.10+(推荐)

2) 启动 MongoDB

在本仓库目录下:

root@kitploit:~
docker compose up -d

确认正在运行:

root@kitploit:~
docker compose ps

3) 运行探测程序

root@kitploit:~
python .\lab_probe.py

预期输出:

  • 打印第一次 hello 中协商的压缩器
  • 打印请求/响应大小
  • 发送压缩后的 hello 并记录压缩和解压缩后的消息大小

4) 运行玩具演示(无网络)

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

仅运行本地解析检查,以说明大小验证为何重要。

5) 关闭

root@kitploit:~
docker compose down

安全注意事项

  • 容器绑定到主机的 127.0.0.1:27017。
  • 不存在利用行为。
  • 探测程序强制执行保守的限制(例如,最大消息大小)并验证所有长度字段。

下载工具