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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2021-32675 — Функциональный эксплойт DoS для CVE-2021-32675 в Redis, использующий заголовки строк большого размера для провоцирования исчерпания памяти. Включает инструкции по использованию и среду тестирования на основе Docker. | Kitploit
Инструменты/GitHubGitHub/rubbxalc/cve-2021-32675
Анализ уязвимостейЭксплуатацияТестирование на ПроникновениеОбучение и ОбразованиеRed Teaming
GitHubrubbxalc/cve-2021-32675

CVE-2021-32675

Функциональный эксплойт DoS для CVE-2021-32675 в Redis, использующий заголовки строк большого размера для провоцирования исчерпания памяти. Включает инструкции по использованию и среду тестирования на основе Docker.

Репозиторий
1320 дней назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2021-32675 – Redis: отказ в обслуживании из-за предварительного выделения памяти (OOM)

Этот репозиторий содержит рабочий эксплойт для CVE-2021-32675 — уязвимости класса «отказ в обслуживании» (DoS) в Redis. Дефект позволяет неаутентифицированным удалённым злоумышленникам вызывать массовое предварительное выделение памяти на сервере Redis, отправляя заголовки bulk-строк завышенного размера без предоставления данных аргументов, что приводит к исчерпанию памяти и сбою службы.

Описание

CVE-2021-32675 — это уязвимость в обработке буфера запросов Redis. При разборе входящих команд в протоколе RESP (REdis Serialization Protocol) Redis считывает объявленную длину аргумента bulk-строки ($<length>\r\n) и немедленно предварительно выделяет в памяти буфер SDS (Simple Dynamic String) для приёма полезной нагрузки — ещё до чтения каких-либо байтов аргумента.

Поскольку это предварительное выделение происходит до получения полезной нагрузки аргумента, неаутентифицированный клиент может объявить максимально допустимый размер bulk-строки (по умолчанию proto-max-bulk-len составляет 512 МБ) и удерживать соединение открытым неограниченно долго, не передавая фактические данные. Redis сохраняет предварительно выделенную память для каждого активного соединения, создавая коэффициент усиления примерно 32 000 000× (~16 байт сетевого трафика приводят к резервированию 512 МБ памяти).

Открытие нескольких одновременных соединений с использованием этой техники, основанной только на заголовках, быстро исчерпывает доступную память сервера, что приводит к:

  • Принудительному вытеснению ключей, если активна политика maxmemory.
  • Отказу в обслуживании путём отклонения последующих операций записи (OOM command not allowed).
  • Завершению процесса операционной системой — OOM (Out-Of-Memory) killer.

Уязвимость затрагивает версии Redis до:

  • 6.2.6
  • 6.0.16
  • 7.0 (при работе без аутентификации или с лимитами bulk-строк по умолчанию)

Экземпляры Redis, работающие без аутентификации (requirepass не настроен) или с proto-max-bulk-len по умолчанию (512 МБ), уязвимы к этому эксплойту. Исправленные версии применяют строгий лимит буфера протокола в 16 КБ для неаутентифицированных клиентов до начала предварительного выделения памяти.

Инструкция по установке

  1. Создайте виртуальное окружение (необязательно, но рекомендуется):
python3 -m venv .venv
source .venv/bin/activate
  1. Установите зависимости:
pip install -r requirements.txt

Требования

  • Python 3.8+

    • библиотека colorama
    • библиотека redis
  • Уязвимый экземпляр Redis (версии до 6.2.6 / 6.0.16 или экземпляры без аутентификации)

Использование

python3 exploit.py --host <IP> --port <PORT> [options]

Параметры

ПараметрТипПо умолчаниюОписание
--hoststrОбязательныйИмя хоста или IP-адрес целевого Redis
--portint6379Номер порта
--connectionsint10Количество открываемых вредоносных соединений
--sizeint512Объявляемый размер буфера bulk-строки в МБ
--holdint5Секунды удержания соединений открытыми перед очисткой
--password, --authstrNoneПароль для аутентификации Redis (при необходимости)

Пример

python3 exploit.py --host 127.0.0.1 --port 6379 --connections 10 --size 512 --hold 5

Локальная тестовая среда (необязательно)

Вы можете запустить локальную тестовую лабораторию, используя прилагаемую конфигурацию Docker Compose:

# Запуск уязвимого Redis (порт 6380) и защищённого Redis (порт 6381)
docker compose -f conf/docker-compose.yml up -d

# Тест против уязвимого экземпляра
python3 exploit.py --host 127.0.0.1 --port 6380 --connections 10 --size 512

# Тест против защищённого экземпляра
python3 exploit.py --host 127.0.0.1 --port 6381 --password "L4bS3cur3!2024" --connections 10 --size 512

# Остановка контейнеров
docker compose -f conf/docker-compose.yml down

Отказ от ответственности

Эта Proof of Concept предоставлена исключительно в образовательных, исследовательских целях и для проверки безопасности. Автор не несёт ответственности за любое неправомерное использование, ущерб или несанкционированное тестирование систем без явного разрешения.

Скачать инструмент