## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-JOE-DESIMONE-MONGOBLEED
# mongobleed
**CVE-2025-14847** — Эксплойт утечки памяти MongoDB без аутентификации
Доказательство концепции эксплуатации уязвимости декомпрессии zlib в MongoDB, позволяющей неаутентифицированным атакующим извлекать конфиденциальные данные из памяти сервера.
## Уязвимость
Ошибка в декомпрессии сообщений zlib в MongoDB возвращает размер выделенного буфера вместо фактической длины распакованных данных. Это позволяет атакующим читать неинициализированную память следующим образом:
1. Отправка сжатого сообщения с завышенным значением `uncompressedSize`
2. MongoDB выделяет большой буфер на основе данных атакующего
3. zlib распаковывает фактические данные в начало буфера
4. Ошибка заставляет MongoDB рассматривать весь буфер как корректные данные
5. Парсер BSON читает «имена полей» из неинициализированной памяти до встречи с нулевым байтом
## Затронутые версии
Версия| Затронутые| Исправленные
---|---|---
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
## Использование
root@kitploit:~
# Базовое сканирование (смещения 20-8192)
python3 mongobleed.py --host <цель>
# Глубокое сканирование для получения большего объёма данных
python3 mongobleed.py --host <цель> --max-offset 50000
# Свой диапазон
python3 mongobleed.py --host <цель> --min-offset 100 --max-offset 20000
## Параметры
## Пример вывода
root@kitploit:~
[*] mongobleed - CVE-2025-14847 MongoDB Memory Leak
[*] Author: Joe Desimone - x.com/dez_
[*] Target: localhost:27017
[*] Scanning offsets 20-50000
[+] offset= 117 len= 39: ssions^\u0001�r��*YDr���
[+] offset=16582 len=1552: MemAvailable: 8554792 kB\nBuffers: ...
[+] offset=18731 len=3908: Recv SyncookiesFailed EmbryonicRsts ...
[*] Total leaked: 8748 bytes
[*] Unique fragments: 42
[*] Saved to: leaked.bin
## Тестовая среда
В репозиторий включён файл Docker Compose для запуска уязвимого экземпляра MongoDB:
root@kitploit:~
docker-compose up -d
python3 mongobleed.py
## Как это работает
Эксплойт создаёт BSON-документы с завышенными полями длины. Когда сервер обрабатывает такие документы, он читает имена полей из неинициализированной памяти до тех пор, пока не встретит нулевой байт. Каждый пробник на разном смещении может извлечь разные участки памяти.
Утёкшие данные могут включать:
* Внутренние журналы и состояние MongoDB
* Конфигурацию движка хранения WiredTiger
* Данные системного `/proc` (meminfo, сведения о сети)
* Пути контейнеров Docker
* UUID подключений и IP-адреса клиентов
## Ссылки
* Отчёт OX Security
* Коммит с исправлением MongoDB
## Автор
Joe Desimone — x.com/dez_
## Отказ от ответственности
Данный инструмент предназначен только для авторизованного тестирования безопасности. Несанкционированный доступ к компьютерным системам является незаконным.