Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-23479-Redis-UAF-Proof-of-Concept — Preuve de concept avec exploitation assistée par GDB (usage éducatif / laboratoire uniquement) | Kitploit
Outils/GitHubGitHub/rizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept
Analyse des VulnérabilitésExploitationDébogueursApprentissage et ÉducationSécurité des Bases de DonnéesExploitation de BinairesLabs et Pratique
GitHubrizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept

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

Preuve de concept avec exploitation assistée par GDB (usage éducatif / laboratoire uniquement)

Voir le dépôt
51il y a 19 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

🔥 CVE-2026-23479 – Preuve de concept de l'UAF dans Redis

License Python Docker CVE PoC

Use-After-Free dans Redis unblockClientOnKey() menant à une exécution de code à distance
Preuve de concept avec exploitation assistée par GDB (usage éducatif / en laboratoire uniquement)


📖 Aperçu

CVE-2026-23479 est une vulnérabilité critique de type Use‑After‑Free (UAF) dans les versions de Redis 7.2.0 à 8.6.2.
Le bug réside dans unblockClientOnKey() qui appelle processCommandAndResetClient() sans vérifier sa valeur de retour.
Si le client est libéré pendant cet appel (par exemple à cause d'une éviction), l'appelant continue d'utiliser un pointeur suspendu → UAF.
Un attaquant capable de manipuler le tas après la libération peut parvenir à une exécution de code arbitraire.

Ce dépôt fournit une preuve de concept assistée par GDB qui :

  • Déclenche le chemin de code vulnérable exact
  • Prouve l'UAF en provoquant délibérément un crash (appel à freeClient())
  • Démontre l'exécution de commandes arbitraires en injectant un appel à system() au même point

⚠️ Important : Ceci n'est pas un exploit weaponisé. Il utilise GDB à l'intérieur d'un conteneur Docker privilégié pour simuler ce qu'un véritable attaquant pourrait accomplir après avoir exploité la vulnérabilité avec succès. Utilisez-le uniquement dans votre propre laboratoire ou sur des systèmes pour lesquels vous disposez d'une autorisation explicite de test.

🎥 Vidéo de la PoC

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


✨ Fonctionnalités

  • 🧪 Quatre modes de fonctionnement – crash, gdb, rce, full
  • 🐳 Basé sur Docker – pas besoin d'installer un Redis vulnérable sur l'hôte
  • 🔍 Détection automatique de version – vérifie si la cible se trouve dans la plage affectée
  • 🧹 Auto-nettoyage – tue les sessions GDB obsolètes avant chaque exécution
  • 🎯 Nom de conteneur flexible – passez n'importe quel conteneur via --container
  • 📦 Fichier Python unique – aucune dépendance au-delà de la bibliothèque standard

🧠 Comment ça fonctionne

  1. Bloquer une victime – Une commande XREAD BLOCK fait attendre le client des données de flux.
  2. Attacher GDB – GDB s'attache au processus Redis (pid 1) à l'intérieur du conteneur.
  3. Définir un point d'arrêt sur processCommandAndResetClient – la fonction appelée lorsque le client bloqué est retraité.
  4. Déclencher le déblocage – Un XADD sur le même flux réveille la victime.
  5. À l'atteinte du point d'arrêt :
    • mode gdb : appelle freeClient($rdi) → provoque délibérément un SIGSEGV → prouve l'UAF.
    • mode rce : appelle system("votre commande") → exécute des commandes shell arbitraires en tant qu'utilisateur Redis (root par défaut).
  6. Vérifier – le script vérifie si le fichier de preuve attendu existe (RCE) ou si Redis a planté (UAF).

Le point d'arrêt se déclenche à chaque fois qu'un client bloqué est débloqué, montrant que le même chemin de code qui contient l'UAF permet également l'exécution de code.


📋 Versions affectées

BranchePlage vulnérable
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

Le script analyse automatiquement la version de Redis et indique si elle est vulnérable.


🐳 Prérequis

  • Docker installé et en cours d'exécution
  • Python 3.8+ (seule la bibliothèque standard est utilisée)
  • Une image Docker Redis 8.6.2 qui utilise apt (par exemple l'image officielle redis:8.6.2)
  • Le conteneur doit être créé avec --privileged (nécessaire pour ptrace)

⚙️ Installation

1. Cloner le dépôt

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

2. Démarrer un conteneur Redis vulnérable

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

3. Installer GDB dans le conteneur

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

4. Vérifier

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

🚀 Utilisation

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

Modes

ModeDescription
crashTente de déclencher l'UAF via une pression mémoire (GDB non requis). Redis peut planter, mais ce n'est pas garanti.
gdbAttache GDB et appelle freeClient() au point d'arrêt → force un SIGSEGV (prouve l'UAF).
rceAttache GDB et appelle system(cmd) au point d'arrêt → exécute une commande shell à l'intérieur du conteneur.
fullExécute d'abord crash ; si Redis ne plante pas, bascule sur gdb.

Options

ArgumentDéfautDescription
target(requis)Adresse IP du serveur Redis
-p, --port6379Port Redis
-m, --modefullL'un de crash, gdb, rce, full
--containerenv-redis-vuln-1Nom du conteneur Docker
--cmdid > /tmp/pwned_by_cveCommande à exécuter en mode rce

📚 Exemples pas à pas

Remarque : Toutes les commandes sont exécutées depuis la machine hôte, pas à l'intérieur du conteneur Docker.

1. Prouver l'UAF via GDB

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

Sortie attendue (extrait)

[+] 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 plantera après le défaut de segmentation.

Redémarrer le conteneur :

docker start redis-vuln-local

2. Obtenir une exécution de code à distance (RCE)

Redémarrer Redis pour garantir un état propre :

docker restart redis-vuln-local

Lancer l'exploit :

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

Vérifier le fichier de preuve :

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

En cas de succès, le fichier existera, prouvant que :

system("touch /tmp/pwned");

a été exécuté à l'intérieur du conteneur Redis.


3. Déclencher l'UAF sans GDB (pression mémoire)

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

Si Redis se termine de manière inattendue (le conteneur n'est plus en cours d'exécution), l'UAF a probablement été déclenché.

Redémarrez-le avec :

docker start redis-vuln-local

4. Exécuter le test complet

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

Ce mode :

  1. Tente le crash par pression mémoire.
  2. Bascule sur la méthode assistée par GDB si Redis survit.

📸 Exemple de sortie (mode RCE)

============================================================
  CVE-2026-23479 Redis UAF Exploit PoC
============================================================
[*] Target: 127.0.0.1:6379
[*] Version: 8.6.2
[+] VULNERABLE
Télécharger l’outil