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

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

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.

Репозиторий
15 ч 32 мин назадЕщё не проверено

Популярное

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

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

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

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

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

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. Создайте виртуальное окружение (необязательно, но рекомендуется):
    root@kitploit:~
    python3 -m venv .venv
    source .venv/bin/activate
    
    1. Установите зависимости:
    root@kitploit:~
    pip install -r requirements.txt
    

    Требования

    • Python 3.8+

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

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

    root@kitploit:~
    python3 exploit.py --host <IP> --port <PORT> [options]
    

    Параметры

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

    Пример

    root@kitploit:~
    python3 exploit.py --host 127.0.0.1 --port 6379 --connections 10 --size 512 --hold 5
    

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

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

    root@kitploit:~
    # Запуск уязвимого 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 предоставлена исключительно в образовательных, исследовательских целях и для проверки безопасности. Автор не несёт ответственности за любое неправомерное использование, ущерб или несанкционированное тестирование систем без явного разрешения.

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