
Environnement de laboratoire pédagogique avec un exploit de preuve de concept pour CVE-2025-49844 (RediShell), une use-after-free critique dans l'interpréteur Lua de Redis, incluant la configuration Docker et l'analyse de la vulnérabilité.
Un environnement de laboratoire pratique pour tester et comprendre la vulnérabilité critique CVE-2025-49844 (RediShell) dans Redis.
Ceci est uniquement à des fins éducatives !
Toutes les versions de Redis antérieures à :
Ce laboratoire utilise Redis 7.2.0 (version vulnérable).
# Installer Docker et Docker Compose
sudo apt-get update
sudo apt-get install docker.io docker-compose
# Installer les dépendances Python
pip install redis colorama
# 1. Démarrer l'instance Redis vulnérable
docker-compose up -d
# 2. Attendre quelques secondes que Redis démarre
sleep 5
# 3. Vérifier que Redis fonctionne
docker-compose ps
# 4. Exécuter l'exploit
python3 exploit_poc.py -H localhost -p 6380 -m all
# Vérifier uniquement la vulnérabilité
python3 exploit_poc.py -H localhost -p 6380 -m check
# Exécuter le test UAF de base
python3 exploit_poc.py -H localhost -p 6380 -m basic
# Tester l'évasion du sandbox
python3 exploit_poc.py -H localhost -p 6380 -m sandbox
# Tester la corruption mémoire avancée
python3 exploit_poc.py -H localhost -p 6380 -m advanced
# Exécuter tous les tests
python3 exploit_poc.py -H localhost -p 6380 -m all
# Avec authentification
python3 exploit_poc.py -H localhost -p 6380 -a "password" -m all
# Voir les journaux
docker-compose logs -f
# Se connecter au CLI Redis
docker-compose exec redis-vulnerable redis-cli
# Arrêter le laboratoire
docker-compose down
# Tout supprimer (y compris les volumes)
docker-compose down -v
╔═══════════════════════════════════════════════════════════╗
║ CVE-2025-49844 (RediShell) PoC ║
║ Use-After-Free in Redis Lua Interpreter ║
║ CVSS Score: 10.0 (CRITICAL) ║
╚═══════════════════════════════════════════════════════════╝
[*] Testing connection to localhost:6380...
[+] Connected successfully!
[i] Redis Version: 7.2.0
[*] Checking if Lua scripting is enabled...
[+] Lua scripting is enabled!
[*] Checking vulnerability status...
[i] Detected Redis version: 7.2.0
[!] VULNERABLE: This version is affected by CVE-2025-49844
[!] Update to the latest patched version immediately!
[*] Attempting basic UAF trigger...
[+] Lua script executed: UAF pattern executed
[!] UAF pattern triggered (simplified demo)
[*] Testing Lua sandbox boundaries...
[*] Testing os.execute...
[+] Protected: os.execute blocked
[*] Testing io.popen...
[+] Protected: io.popen blocked
[*] Testing loadfile...
[+] Protected: loadfile blocked
[*] Testing package.loadlib...
[+] Protected: package.loadlib blocked
[*] Attempting memory corruption pattern...
[+] Memory corruption pattern executed: Memory corruption pattern completed
[!] In vulnerable versions, this could lead to RCE!
============================================================
[*] PoC execution completed
============================================================
La vulnérabilité exploite un bug Use-After-Free vieux de 13 ans dans l'interpréteur Lua de Redis :
# Récupérer la dernière version corrigée
docker pull redis:8.2.2
# ou
docker pull redis:7.4.6
# /etc/redis/redis.conf
# Activer l'authentification
requirepass your_strong_password_here
# Restreindre l'accès réseau
bind 127.0.0.1 ::1
protected-mode yes
# Désactiver les commandes dangereuses
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
rename-command EVALSHA ""
# Activer la journalisation
loglevel notice
logfile /var/log/redis/redis-server.log
# Désactiver les scripts Lua pour des utilisateurs spécifiques
redis-cli ACL SETUSER myuser -@scripting
# Créer un utilisateur limité
redis-cli ACL SETUSER limited on >password ~* +@read +@write -@scripting
# Utiliser les règles de pare-feu
sudo ufw allow from 192.168.1.0/24 to any port 6379
sudo ufw deny 6379
# Ou utiliser iptables
sudo iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 6379 -j DROP
# Vérifier ce qui utilise le port
sudo lsof -i :6380
# Ou changer le port dans docker-compose.yml
# ports:
# - "6381:6379"
# Installer les paquets requis
pip install redis colorama
# Ou utiliser un environnement virtuel
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Ajouter l'utilisateur au groupe docker
sudo usermod -aG docker $USER
# Puis se déconnecter et se reconnecter
# Vérifier les journaux
docker-compose logs
# Redémarrer le conteneur
docker-compose restart
# Reconstruire l'image
docker-compose up -d --build
redis_exploit/
├── Dockerfile # Instance vulnérable Redis 7.2.0
├── docker-compose.yml # Configuration Docker Compose
├── exploit_poc.py # Script d'exploit principal
├── requirements.txt # Dépendances Python
├── .gitignore # Fichier d'ignorance Git
└── README.md # Ce fichier
Ce PoC est simplifié et à des fins éducatives uniquement. L'exploit réel de CVE-2025-49844 implique une manipulation mémoire complexe. Corrigez toujours vos instances Redis vers la dernière version !