Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
mongobleed — CVE-2025-14847 объяснение и лаборатория | Kitploit
Инструменты/GitHubGitHub/adolfbharath/mongobleed
Анализ уязвимостейСетевая безопасностьКриптографияОбучение и ОбразованиеБезопасность Баз ДанныхЛаборатории и Практика
GitHubadolfbharath/mongobleed

mongobleed

CVE-2025-14847 объяснение и лаборатория

Репозиторий
148 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

MongoDB Compression Leak Lab (Безопасный, Образовательный)

Ссылочный CVE : CVE-2025-14847

Этот репозиторий — образовательный лаб, демонстрирующий концепцию класса проблем, часто описываемых как «compression framing / size-metadata memory disclosure» в протоколах баз данных.

Он создан для понимания защиты: как согласовывается и фреймируется сетевое сжатие MongoDB, почему поля размера важны и как надежные парсеры предотвращают непреднамеренное раскрытие памяти.

Примечание о ссылочном CVE: Этот лаб построен вокруг идеи, указанной как CVE-2025-14847. Этот репозиторий не подтверждает, не воспроизводит и не эксплуатирует конкретную ошибку вендора и не утверждает, что какая-либо версия MongoDB уязвима. Он сосредоточен на общем режиме сбоя (несоответствие метаданных размера вокруг сжатых полезных нагрузок) и мерах по смягчению.

Статус версий (уязвимая vs исправленная)

Этот репозиторий не содержит (и не должен использоваться как) доказательство того, какие версии MongoDB уязвимы или исправлены для какого-либо конкретного CVE.

Чтобы документально оформить «уязвимые» и «исправленные» версии для отчета, используйте официальное уведомление вендора / примечания к выпуску для данного CVE и цитируйте их.

Практические шаги для проверки вашей версии:

  • Версия Docker-контейнера:
    • docker compose exec mongodb mongod --version
    • или docker compose exec mongodb mongosh --quiet --eval "db.version()"
  • Версия хост-установки:
    • mongod --version
    • mongosh --quiet --eval "db.version()"
  • Если вы предоставите ссылку на используемое уведомление, я смогу оформить чистую таблицу «Затронутые / Исправленные» в README без гаданий.

    В чем уязвимость (концептуально)

    Этот лаб иллюстрирует режим сбоя compression framing / size-metadata mismatch:

    • Сообщения MongoDB имеют префикс длины. При сетевом сжатии оболочка OP_COMPRESSED добавляет больше полей размера (внешняя длина сообщения, объявленный несжатый размер и собственная длина внутреннего сообщения).
    • Если реализация доверяет любому из этих полей размера без строгой проверки, она может некорректно обрабатывать буферы во время декомпрессии или парсинга.
    • В ошибочных реализациях это может привести к чтению за пределами буфера или возврату байтов неинициализированного буфера, что является одним из способов возникновения «раскрытия памяти».

    См. protocol_overview.md для подробного описания фрейминга.

    Этическая оговорка

    • Этот проект заведомо неэксплуатируем.
    • Он не включает вредоносную логику, эксплойт-код или техники, предназначенные для компрометации систем.
    • Его следует запускать только против локального Docker-контейнера, предоставленного здесь.
    • Не направляйте этот код на системы, которые вам не принадлежат или на тестирование которых у вас нет явного разрешения.

    Цели обучения

    По окончании лаба вы сможете:

    • Объяснить, как работает фрейминг проволочного протокола MongoDB на высоком уровне.
    • Описать, как согласовывается и применяется сетевое сжатие zlib.
    • Понять, как некорректные метаданные длины/размера концептуально могут привести к раскрытию памяти в ошибочной реализации.
    • Определить практические меры смягчения: исправления, усиление конфигурации и сетевое обнаружение.

    Что этот репозиторий делает (и не делает)

    Он делает:

    • Запускает MongoDB в Docker с включенным сжатием zlib.
    • Использует крошечный оригинальный Python-клиент для:
      • Отправки несжатого hello, включающего compression: ["zlib"]
      • Отправки правильно сфреймированного сообщения OP_COMPRESSED с использованием zlib
      • Логирования несжатых и сжатых размеров и сводки ответов сервера
    • Включает локальную демонстрацию «игрушечного парсера», показывающую, как защитный парсер отклоняет несоответствующие метаданные размера.

    Он НЕ делает:

    • Не формирует вредоносные пакеты для реальной эксплуатации.
    • Не пытается обойти аутентификацию.
    • Не пытается читать произвольную память.

    Содержимое репозитория

    • docker-compose.yml – Запускает контейнер MongoDB с включенным сжатием zlib и доступом только с localhost.
    • protocol_overview.md – Проволочный протокол + BSON + рабочий процесс сжатия + концептуальное объяснение уязвимости.
    • mitigation.md – Рекомендации по защите: исправления, конфигурация и идеи по обнаружению.
    • lab_probe.py – Оригинальный зонд, который согласовывает сжатие и безопасно логирует размеры сообщений.

    Как безопасно запустить лаб

    1) Предварительные требования

    • Docker Desktop (или совместимый движок Docker)
    • Python 3.10+ (рекомендуется)

    2) Запуск MongoDB

    Из директории репозитория:

    root@kitploit:~
    docker compose up -d
    

    Подтвердите, что он запущен:

    root@kitploit:~
    docker compose ps
    

    3) Запуск зонда

    root@kitploit:~
    python .\lab_probe.py
    

    Ожидаемый вывод:

    • Выводит согласованные компрессоры из первого hello
    • Выводит размеры запроса/ответа
    • Отправляет сжатый hello и логирует размеры как сжатого, так и распакованного сообщения

    4) Запуск игрушечной демонстрации (без сети)

    root@kitploit:~
    python .\lab_probe.py --toy-demo
    

    Это запускает только локальные проверки парсинга, чтобы проиллюстрировать, почему проверка размера важна.

    5) Остановка

    root@kitploit:~
    docker compose down
    

    Замечания по безопасности

    • Контейнер привязан к 127.0.0.1:27017 на хосте.
    • Эксплойт-поведение отсутствует.
    • Зонд применяет консервативные ограничения (например, максимальный размер сообщения) и проверяет все поля длины.
    Скачать инструмент