
Эксплойт на Go (доказательство концепции) для CVE-2025-14847 (MongoBleed) — уязвимости раскрытия памяти MongoDB. Создает некорректные BSON-документы для утечки неинициализированной памяти сервера через сообщения об ошибках.
Этот репозиторий содержит proof-of-concept эксплойт на Go для CVE-2025-14847, уязвимости раскрытия памяти MongoDB, часто называемой Mongobleed.
Данный PoC является переписанной на Go версией оригинального эксплойта на Python от Joe Desimone, доступного здесь:
https://github.com/joe-desimone/mongobleed
Эксплойт использует ошибку декомпрессии zlib и парсинга BSON для утечки неинициализированной памяти из уязвимого сервера MongoDB.
Прочитайте пост в блоге - https://saereya.github.io/posts/mongobleed-cve-2025-14847/
CVE-2025-14847 вызвана некорректной обработкой сжатых сообщений OP_MSG в MongoDB. Создавая искажённый BSON-документ с завышенной длиной документа и помещая его в сообщение OP_COMPRESSED, сервер может выполнять чтение за пределами буфера декомпрессии.
Это может привести к тому, что MongoDB интерпретирует остатки памяти как имена полей BSON, которые затем отражаются в сообщениях об ошибках. Повторение этого процесса с разными смещениями может привести к утечке фрагментов памяти сервера.
Этот PoC:
OP_COMPRESSED протокола MongoDBУтёкшие данные извлекаются из строк ошибок, таких как:
field name '...'type <n>Эта уязвимость затрагивает определённые версии MongoDB до выхода соответствующего патча.
Обратитесь к рекомендациям MongoDB по безопасности для точного списка версий.
Сборка:
go build -o mongobleed
Запуск:
./mongobleed --host <цель> --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
Этот код предоставлен только для образовательных и исследовательских целей.
Не запускайте этот инструмент против систем, которые вам не принадлежат или на тестирование которых у вас нет явного разрешения. Несанкционированное использование может быть незаконным и неэтичным.