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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-23479-Redis-UAF-Proof-of-Concept — Доказательство концепции с эксплуатацией при помощи GDB (только для образовательных/лабораторных целей) | Kitploit
Инструменты/GitHubGitHub/rizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept
Анализ уязвимостейЭксплуатацияОтладчикиОбучение и ОбразованиеБезопасность Баз ДанныхЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubrizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept

CVE-2026-23479-Redis-UAF-Proof-of-Concept

Доказательство концепции с эксплуатацией при помощи GDB (только для образовательных/лабораторных целей)

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

Популярное

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

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

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

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

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

🔥 CVE-2026-23479 – Proof of Concept UAF в Redis

License Python Docker CVE PoC

Use-After-Free в Redis unblockClientOnKey(), приводящий к удалённому выполнению кода
Proof of concept с эксплуатацией при помощи GDB (только для образовательных целей / лабораторного использования)


📖 Обзор

CVE-2026-23479 — критическая уязвимость Use‑After‑Free (UAF) в Redis версий с 7.2.0 по 8.6.2.
Ошибка находится в unblockClientOnKey(), которая вызывает processCommandAndResetClient() без проверки возвращаемого значения.
Если клиент освобождается во время этого вызова (например, из-за вытеснения), вызывающий код продолжает работать с висячим указателем → UAF.
Злоумышленник, способный управлять кучей после освобождения, может добиться выполнения произвольного кода.

Этот репозиторий предоставляет PoC с использованием GDB, который:

  • Запускает точный уязвимый путь кода
  • Доказывает наличие UAF, намеренно вызывая падение (вызов freeClient())
  • Демонстрирует выполнение произвольных команд, внедряя вызов system() в той же точке

⚠️ Важно: Это не оружие-эксплойт. Он использует GDB внутри привилегированного Docker-контейнера, чтобы смоделировать, чего реальный злоумышленник мог бы достичь после успешной эксплуатации уязвимости. Используйте его только в своей лаборатории или в системах, на тестирование которых у вас есть явное разрешение.

🎥 Видео PoC

https://github.com/user-attachments/assets/5ce3aff0-e21c-4ad4-8a0b-50b57bdcf9ea


✨ Возможности

  • 🧪 Четыре режима работы – crash, gdb, rce, full
  • 🐳 На основе Docker – не нужно устанавливать уязвимый Redis на хост
  • 🔍 Автоматическое определение версии – проверяет, входит ли цель в уязвимый диапазон
  • 🧹 Самоочистка – завершает устаревшие сессии GDB перед каждым запуском
  • 🎯 Гибкое имя контейнера – можно передать любой контейнер через --container
  • 📦 Один файл Python – никаких зависимостей, кроме стандартной библиотеки

🧠 Как это работает

  1. Блокировка жертвы – команда XREAD BLOCK заставляет клиента ждать данных из потока.
  2. Подключение GDB – GDB подключается к процессу Redis (pid 1) внутри контейнера.
  3. Установка точки останова на processCommandAndResetClient – функцию, вызываемую при повторной обработке заблокированного клиента.
  4. Запуск разблокировки – XADD в тот же поток пробуждает жертву.
  5. При срабатывании точки останова:
    • Режим gdb: вызывает freeClient($rdi) → намеренно вызывает SIGSEGV → доказывает UAF.
    • Режим rce: вызывает system("ваша команда") → выполняет произвольные shell-команды от имени пользователя Redis (по умолчанию root).
  6. Проверка – скрипт проверяет, существует ли ожидаемый файл-доказательство (RCE) или упал ли Redis (UAF).

Точка останова срабатывает каждый раз, когда заблокированный клиент разблокируется, показывая, что тот же путь кода, который содержит UAF, также позволяет выполнить код.


📋 Уязвимые версии

ВеткаУязвимый диапазон
7.27.2.0 – 7.2.13
7.47.4.0 – 7.4.8
8.28.2.0 – 8.2.5
8.48.4.0 – 8.4.2
8.68.6.0 – 8.6.2

Скрипт автоматически определяет версию Redis и сообщает, уязвима ли она.


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

  • Установленный и запущенный Docker
  • Python 3.8+ (используется только стандартная библиотека)
  • Docker-образ Redis 8.6.2, использующий apt (например, официальный redis:8.6.2)
  • Контейнер должен быть создан с флагом --privileged (требуется для ptrace)

⚙️ Установка

1. Клонируйте репозиторий

git clone https://github.com/YOUR_USERNAME/CVE-2026-23479-PoC.git
cd CVE-2026-23479-PoC

2. Запустите уязвимый контейнер Redis

docker run -d --name redis-vuln-local --privileged -p 6379:6379 \
  redis:8.6.2 redis-server --protected-mode no

3. Установите GDB внутри контейнера

docker exec -u root redis-vuln-local bash -c "
  apt-get update && apt-get install -y gdb binutils procps
"

4. Проверьте

docker exec redis-vuln-local gdb --version
redis-cli -h 127.0.0.1 -p 6379 ping   # should return PONG

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

python3 redisexp.py <target> -p <port> -m <mode> --container <name> [--cmd "command"]

Режимы

РежимОписание
crashПопытка вызвать UAF через давление на память (GDB не требуется). Redis может упасть, но это не гарантировано.
gdbПодключение GDB и вызов freeClient() в точке останова → принудительный SIGSEGV (доказывает UAF).
rceПодключение GDB и вызов system(cmd) в точке останова → выполняет shell-команду внутри контейнера.
fullСначала запускает crash; если Redis не падает, переключается на gdb.

Опции

АргументПо умолчаниюОписание
target(обязательно)IP-адрес сервера Redis
-p, --port6379Порт Redis
-m, --modefullОдин из crash, gdb, rce, full
--containerenv-redis-vuln-1Имя Docker-контейнера
--cmdid > /tmp/pwned_by_cveКоманда для выполнения в режиме rce

📚 Пошаговые примеры

Примечание: Все команды выполняются с хост-машины, не внутри Docker-контейнера.

1. Доказательство UAF через GDB

python3 redisexp.py 127.0.0.1 -p 6379 -m gdb --container redis-vuln-local

Ожидаемый вывод (фрагмент)

[+] Victim blocked on XREAD
[+] GDB script deployed
[*] Triggering unblock via XADD...
[+] SIGSEGV in processCommand after freeClient()
[+] This confirms the UAF code path in unblockClientOnKey()

Redis упадёт после ошибки сегментации.

Перезапустите контейнер:

docker start redis-vuln-local

2. Достижение удалённого выполнения кода (RCE)

Перезапустите Redis для обеспечения чистого состояния:

docker restart redis-vuln-local

Запустите эксплойт:

python3 redisexp.py 127.0.0.1 -p 6379 -m rce \
  --cmd "touch /tmp/pwned" \
  --container redis-vuln-local

Проверьте файл-доказательство:

docker exec redis-vuln-local ls -l /tmp/pwned

В случае успеха файл будет существовать, что доказывает, что:

system("touch /tmp/pwned");

была выполнена внутри контейнера Redis.


3. Запуск UAF без GDB (давление на память)

python3 redisexp.py 127.0.0.1 -p 6379 -m crash --container redis-vuln-local

Если Redis неожиданно завершается (контейнер больше не работает), вероятно, UAF был вызван.

Перезапустите его с помощью:

docker start redis-vuln-local

4. Запуск полного теста

python3 redisexp.py 127.0.0.1 -p 6379 -m full --container redis-vuln-local

Этот режим:

  1. Пытается вызвать падение через давление на память.
  2. Переключается на метод с использованием GDB, если Redis выживает.

📸 Пример вывода (режим RCE)

============================================================
  CVE-2026-23479 Redis UAF Exploit PoC
============================================================
[*] Target: 127.0.0.1:6379
[*] Version: 8.6.2
[+] VULNERABLE

[*] Method: RCE via UAF code path injection
    Exploits CVE-2026-23479 UAF in unblockClientOnKey()
    Breakpoint on processCommandAndResetClient -> system()
    Command: touch /tmp/pwned
Скачать инструмент