Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !
CVE-2025-49844 — Scanner et guide pédagogique pour CVE-2025-49844 (RediShell), une vulnérabilité use-after-free dans les scripts Lua de Redis. Vérifie l'exposition des serveurs Redis, fournit des étapes de remédiation et explique les mécanismes de l'exploit à des fins d'apprentissage. | Kitploit
Scanner et guide pédagogique pour CVE-2025-49844 (RediShell), une vulnérabilité use-after-free dans les scripts Lua de Redis. Vérifie l'exposition des serveurs Redis, fournit des étapes de remédiation et explique les mécanismes de l'exploit à des fins d'apprentissage.
Salut ! C'est un outil simple que j'ai créé pour aider les gens à vérifier si leurs serveurs Redis sont vulnérables à ce bug. Ce n'est pas destiné à de vraies attaques - juste pour apprendre et protéger vos propres trucs.
De Quoi Ça Parle ?
Très bien mes chers amis, voici l'une des plus intéressantes conneries de 2025, CVE-2025-49844. En gros, si quelqu'un peut exécuter des scripts Lua sur votre serveur Redis, il peut accéder à la mémoire.
Les Trucs Importants
À Quel Point C'est Grave ? : Foutu (9,9/10)
Qui Est Concerné : Toute personne utilisant Redis version 8.2.1 ou plus ancienne
Ce Qui Se Passe : Exécution de code
Comment Ils Font : Via les scripts Lua (que Redis utilise pour des trucs de base de données sophistiqués)
C'est Parti !
Étape 1 : Compiler Ce Truc
root@kitploit:~
# D'abord, préparez le Go
cd scanner
go mod tidy
# Ensuite, compilez le scanner
go build -o rscan redis-scanner.go
Étape 2 : Vérifier Vos Serveurs
root@kitploit:~
# Vérifier un serveur
./rscan -host votre-serveur.com -port 6379
# Vérifier avec un mot de passe (si vous en avez un)
./rscan -host votre-serveur.com -port 6379 -auth votremotdepasse
# Vérifier plusieurs serveurs d'un coup
./rscan -host serveur1.com,serveur2.com,serveur3.com
# Ou vérifier à partir d'un fichier
./rscan -file hôtes.txt
Étape 3 : Réparer Ce Qui Est Cassé
root@kitploit:~
# Désactiver les scripts Lua (ça stoppe l'attaque)
redis-cli ACL SETUSER default -@scripting
# Ou simplement mettre à jour Redis vers la version la plus récente
Que Signifient les Résultats ?
🚨 DANGER ! - Votre Redis est vulnérable (ancienne version + scripts Lua fonctionnels)
🛡️ Bien ! - Votre Redis est protégé (Lua désactivé ou version plus récente)
✅ Super ! - Votre Redis est sûr (version 8.2.2 ou plus récente)
❌ Oups ! - Impossible de se connecter ou quelque chose a mal tourné
Comment Fonctionne Ce Bug Mémoire
Le Problème
C'est ce qu'on appelle un bug "use-after-free". En gros, Redis a un système de gestion de la mémoire qui se mélange parfois les pinceaux sur la mémoire qu'il a déjà nettoyée.
Comment Ça Devrait Fonctionner :
📝 Redis crée des données en mémoire
🔍 Utilise ces données pour quelque chose
🗑️ Nettoie la mémoire quand c'est fini
✅ Tout est sûr et sécurisé
Comment Ça Fonctionne Vraiment (Le Bug) :
📝 Redis crée des données en mémoire
🔍 Utilise ces données pour quelque chose
🗑️ Nettoie la mémoire
🔍 Essaie d'utiliser les données à nouveau (mais elles ont déjà disparu !)
💥 Tout casse ce qui est exploité pour le fun ;)
Comment les Hackers Utilisent Ça
Ce Qu'ils Ciblent : Le système de scripts Lua de Redis
Les Commandes Qu'ils Utilisent : EVAL et EVALSHA (elles exécutent des scripts Lua)
Ce Qu'ils Veulent : Écraser la mémoire et exécuter du code arbitraire
Comment Réparer Ça
Faites Ça Tout de Suite (Premières 24 Heures)
Trouvez tous vos serveurs Redis (vous en avez peut-être plus que vous ne le pensez)
Vérifiez leurs versions (tout ce qui est 8.2.1 ou plus ancien est foutu, vous devrez mettre à jour !)
Désactivez les scripts Lua (ça stoppe l'attaque immédiatement)
Planifiez votre mise à niveau (c'est la vraie solution)
Correctif Rapide (Stoppez l'Attaque Maintenant !)
root@kitploit:~
# Désactivez les scripts Lua (ça stoppe l'attaque)
redis-cli ACL SETUSER default -@scripting
# Ou modifiez votre fichier redis.conf et ajoutez cette ligne :
disable-commands eval evalsha
# Puis redémarrez Redis
sudo systemctl restart redis
Verrouillez Votre Réseau
root@kitploit:~
# Autorisez uniquement certaines IP à se connecter à Redis
iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
# Faites écouter Redis uniquement sur des interfaces réseau spécifiques
bind 127.0.0.1 10.0.0.100
Configurez des Mots de Passe Appropriés
root@kitploit:~
# Définissez un mot de passe fort
redis-cli CONFIG SET requirepass "fuckredis1234ilovehacking!"
# Créez des utilisateurs avec des permissions limitées
redis-cli ACL SETUSER appuser on >password +@read +@write -@scripting
redis-cli ACL SETUSER readonly on >password +@read -@scripting
Mettez à Jour Redis (La Vraie Solution)
root@kitploit:~
# Sauvegardez vos données d'abord (faites-le toujours !)
sudo cp -r /var/lib/redis /var/lib/redis.backup.$(date +%Y%m%d)
# Mettez à jour Redis vers la version corrigée
# Sur Ubuntu/Debian :
sudo apt update && sudo apt install redis-server=8.2.2*
# Sur CentOS/RHEL :
sudo yum update redis
# Vérifiez que ça a fonctionné
redis-server --version
Testez Que Votre Correctif Fonctionne Vraiment
Assurez-Vous Que les Scripts Sont Bloqués
root@kitploit:~
# Ça devrait échouer si votre correctif fonctionne
redis-cli -a "VotreMotDePasse" EVAL "return 'test'" 0
# Devrait dire : (error) ERR unknown command 'EVAL'
Vérifiez Votre Sécurité Réseau
root@kitploit:~
# Voyez si Redis est accessible depuis le réseau
nmap -p 6379 votre-serveur-redis
# Testez si un mot de passe est requis
redis-cli -h votre-serveur-redis -p 6379 ping
# Devrait demander un mot de passe
Comment Repérer Cette Attaque
Signes Dans Votre Réseau
Des schémas accrus d'utilisation de scripts Lua
Quelqu'un qui envoie des scripts vraiment gros ou compliqués
Beaucoup de scripts qui s'exécutent très vite
Des scripts qui sont évidemment suspects
Signes Sur Votre Serveur
Redis plante ou redémarre sans arrêt
L'utilisation de la mémoire qui saute de haut en bas
Redis qui établit des connexions réseau étranges
Des fichiers accédés qui ne devraient pas l'être
Vérifiez Vos Journaux
root@kitploit:~
# Cherchez une activité de scripts Lua bizarre
grep -i "eval\|evalsha" /var/log/redis/redis.log
# Vérifiez les tentatives de connexion échouées
grep -i "auth" /var/log/redis/redis.log
# Cherchez des erreurs de scripts
grep -i "script" /var/log/redis/redis.log
À Quel Point C'est Difficile à Exploiter ?
C'est Assez Compliqué (si vous ne savez pas ce qui se passe)
Vous devez comprendre comment Redis fonctionne en interne
Astuces Mémoire : Vous devez jouer avec la façon dont Redis gère la mémoire
Compétences Lua : Vous devez être bon pour écrire des scripts Lua
Timing Parfait : Vous devez déclencher le bug au moment exact
À Quoi Ressemblent les Vraies Exploitations
Créez des Schémas Mémoire Bizarres : Écrivez des scripts Lua qui font organiser la mémoire de Redis de manières spécifiques
Trompez le Processus de Nettoyage : Faites nettoyer la mémoire à Redis au mauvais moment
Cassez la Mémoire : Faites utiliser à Redis de la mémoire qui a déjà été supprimée
Exécutez Votre Code : Utilisez la mémoire cassée pour exécuter ce que vous voulez
À Quel Point C'est Vraiment Grave ?
Ce Qui Se Passe Si Vous Êtes Piraté
Prise de Contrôle Totale : Les hackers peuvent exécuter tout ce qu'ils veulent sur votre serveur
Toutes Vos Données : Ils peuvent voir tout ce qui est dans votre base de données Redis
Propagation à d'Autres Serveurs : Ils pourraient utiliser votre serveur pour attaquer d'autres choses
Rester Caché : Ils peuvent garder l'accès même après que vous pensiez avoir tout réparé
Ce Que Ça Signifie Pour Votre Entreprise
Fuites de Données : Toutes vos informations sensibles pourraient être volées
Tout Casse : Votre service Redis pourrait cesser de fonctionner
Problèmes Légaux : Vous pourriez être amendé pour ne pas avoir protégé les données
Plus Personne Ne Vous Fait Confiance : Les clients pourraient partir s'ils l'apprennent
Passons aux Choses Techniques
Quelles Parties de Redis Sont Cassées
Le moteur de scripts Lua (commandes eval et evalsha)
La façon dont Redis gère la mémoire
Le système de collecte des déchets (nettoie la mémoire inutilisée)
Comment la Mémoire Se Casse
Le bug se produit quand :
Vous créez des schémas spécifiques d'objets en Lua
Vous jouez avec la façon dont Redis compte les références à la mémoire
Vous forcez Redis à nettoyer la mémoire au mauvais moment
Vous exploitez le timing de la gestion de la mémoire de Redis
Quelles Versions Sont Affectées
Redis version 8.2.1 et plus ancienne
Toute version avec les scripts Lua activés
Ce bug existe depuis environ 13 ans (ouille !)
À Quoi Ressemblent les Exploitations (Pour Apprendre)
Structure de Base (Ça Ne Fonctionnera Pas Vraiment)
root@kitploit:~
-- C'est juste pour vous montrer à quoi ressemble la structure
local function create_memory_pattern()
-- Créez des objets qui perturbent le nettoyage mémoire de Redis
local objects = {}
for i = 1, 1000 do
objects[i] = {data = "pattern_" .. i}
end
return objects
end
local function trigger_gc()
-- Forcez Redis à nettoyer la mémoire au mauvais moment
collectgarbage("collect")
-- C'est là que le bug mémoire se produit
end
-- Structure d'attaque principale
local objects = create_memory_pattern()
-- Jouez avec les références mémoire
-- Forcez la collecte des déchets
-- Utilisez la mémoire cassée pour exécuter du code
Comment Vous Protéger
Verrouillez Votre Réseau
Configurez des règles de pare-feu
Ne laissez pas Redis parler à tout Internet
Surveillez votre trafic réseau
Activez la journalisation
Contrôlez Qui Peut Accéder
Utilisez des mots de passe forts
Configurez des permissions utilisateur (ACL)
Donnez aux gens uniquement l'accès dont ils ont besoin
Vérifiez régulièrement qui a accès
Surveillez les Problèmes
Regardez vos journaux
Surveillez les performances de Redis
Guettez les comportements bizarres
Ayez un plan pour quand les choses tournent mal
Vous Voulez Tester Ça en Toute Sécurité ?
Si vous voulez voir comment ça fonctionne sans rien casser de réel, vous pouvez utiliser Docker :
root@kitploit:~
# Démarrez un Redis de test (celui-ci est vulnérable)
docker run -d --name redis-test -p 6379:6379 redis:6.0
# Testez-le
cd scanner
./rscan -host localhost -port 6379
# Arrêtez le vulnérable et démarrez un corrigé
docker stop redis-test
docker run -d --name redis-fixed -p 6379:6379 redis:6.0 redis-server --rename-command EVAL "" --rename-command EVALSHA ""
./rscan -host localhost -port 6379
# Nettoyez quand vous avez fini
docker stop redis-fixed && docker rm redis-fixed
Trucs Sophistiqués (Si Vous Voulez)
Toutes les Options
root@kitploit:~
cd scanner
./rscan --help
Scanner Plusieurs Serveurs
Créez un fichier hosts.txt comme ceci :
root@kitploit:~
# Mettez vos serveurs ici
serveur1.com
serveur2.com:6380
192.168.1.100
redis.exemple.com:6379
Rendez Ça Plus Rapide
root@kitploit:~
# Utilisez plus de workers pour scanner plus vite (si vous avez beaucoup de serveurs)
./rscan -host serveur1.com,serveur2.com -workers 20
Ce Dont Vous Avez Besoin
Go 1.21+ (pour compiler le scanner)
redis-cli (pour vous connecter à Redis)
Docker (optionnel, pour des tests en toute sécurité)