Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!
CVE-2025-49844 — Scanner e guida didattica per CVE-2025-49844 (RediShell), una vulnerabilità use-after-free nello scripting Lua di Redis. Verifica l'esposizione dei server Redis, fornisce passaggi di remediation e spiega i meccanismi dell'exploit a scopo didattico. | Kitploit
Scanner e guida didattica per CVE-2025-49844 (RediShell), una vulnerabilità use-after-free nello scripting Lua di Redis. Verifica l'esposizione dei server Redis, fornisce passaggi di remediation e spiega i meccanismi dell'exploit a scopo didattico.
Ehi! Questo è un semplice strumento che ho creato per aiutare le persone a verificare se i loro server Redis sono vulnerabili a questo bug. Non è pensato per attacchi reali - solo per imparare e proteggere le proprie cose.
Di Cosa Si Tratta?
Ok gente mia, ecco uno dei casini più interessanti del 2025, CVE-2025-49844. In pratica, se qualcuno riesce a eseguire script Lua sul tuo server Redis, può ottenere accesso alla memoria.
Le Cose Importanti
Quanto è Grave?: Serio (9.9/10)
Chi è Colpito: Chiunque usi Redis versione 8.2.1 o precedente
Cosa Succede: Esecuzione di Codice
Come Lo Fanno: Tramite scripting Lua (che Redis usa per robe fancy col database)
Iniziamo!
Passo 1: Compila Questa Cosa
root@kitploit:~
# Prima, prepara le cose per Go
cd scanner
go mod tidy
# Poi compila lo scanner
go build -o rscan redis-scanner.go
Passo 2: Controlla i Tuoi Server
root@kitploit:~
# Controlla un server
./rscan -host tuo-server.com -port 6379
# Controlla con una password (se ne hai una)
./rscan -host tuo-server.com -port 6379 -auth tuapassword
# Controlla più server in una volta
./rscan -host server1.com,server2.com,server3.com
# Oppure controlla da un file
./rscan -file hosts.txt
Passo 3: Ripara Cosa È Rotto
root@kitploit:~
# Disattiva lo scripting Lua (questo ferma l'attacco)
redis-cli ACL SETUSER default -@scripting
# Oppure aggiorna Redis all'ultima versione
Cosa Significano i Risultati?
🚨 PERICOLO! - Il tuo Redis è vulnerabile (versione vecchia + script Lua funzionanti)
🛡️ Bene! - Il tuo Redis è protetto (Lua disabilitato o versione più recente)
✅ Ottimo! - Il tuo Redis è al sicuro (versione 8.2.2 o successiva)
❌ Ops! - Impossibile connettersi o qualcosa è andato storto
Come Funziona Questo Bug di Memoria
Il Problema
Questo è quello che viene chiamato un bug "use-after-free". In pratica, Redis ha un sistema di gestione della memoria che a volte si confonde su quale memoria ha già ripulito.
Come Dovrebbe Funzionare:
📝 Redis crea alcuni dati in memoria
🔍 Usa quei dati per qualcosa
🗑️ Ripulisce la memoria quando ha finito
✅ Tutto è sicuro e a posto
Come Funziona Davvero (Il Bug):
📝 Redis crea alcuni dati in memoria
🔍 Usa quei dati per qualcosa
🗑️ Ripulisce la memoria
🔍 Prova a usare di nuovo i dati (ma sono già spariti!)
💥 Tutto si rompe e viene sfruttato per divertimento ;)
Come Lo Usano gli Hacker
Cosa Colpiscono: Il sistema di scripting Lua di Redis
Comandi Che Usano: EVAL e EVALSHA (questi eseguono script Lua)
Cosa Vogliono: Sovrascrivere la memoria ed eseguire codice arbitrario
Come Risolvere Questo Problema
Fai Questo Subito (Prime 24 Ore)
Trova tutti i tuoi server Redis (potresti averne più di quanto pensi)
Controlla le loro versioni (qualsiasi cosa 8.2.1 o precedente è compromessa, dovrai aggiornare!)
Disattiva gli script Lua (questo ferma l'attacco immediatamente)
Pianifica l'aggiornamento (questa è la vera soluzione)
Soluzione Rapida (Ferma l'Attacco Ora!)
root@kitploit:~
# Disattiva gli script Lua (questo ferma l'attacco)
redis-cli ACL SETUSER default -@scripting
# Oppure modifica il tuo file redis.conf e aggiungi questa riga:
disable-commands eval evalsha
# Poi riavvia Redis
sudo systemctl restart redis
Blocca la Tua Rete
root@kitploit:~
# Consenti solo a specifici IP di connettersi a 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
# Fai ascoltare Redis solo su specifiche interfacce di rete
bind 127.0.0.1 10.0.0.100
Imposta Password Adeguate
root@kitploit:~
# Imposta una password forte
redis-cli CONFIG SET requirepass "fuckredis1234ilovehacking!"
# Crea utenti con permessi limitati
redis-cli ACL SETUSER appuser on >password +@read +@write -@scripting
redis-cli ACL SETUSER readonly on >password +@read -@scripting
Aggiorna Redis (La Vera Soluzione)
root@kitploit:~
# Fai un backup dei tuoi dati prima (fallo sempre!)
sudo cp -r /var/lib/redis /var/lib/redis.backup.$(date +%Y%m%d)
# Aggiorna Redis alla versione corretta
# Su Ubuntu/Debian:
sudo apt update && sudo apt install redis-server=8.2.2*
# Su CentOS/RHEL:
sudo yum update redis
# Verifica che abbia funzionato
redis-server --version
Testa Che la Tua Soluzione Funzioni Davvero
Assicurati Che gli Script Siano Bloccati
root@kitploit:~
# Questo dovrebbe fallire se la tua soluzione funziona
redis-cli -a "LaTuaPassword" EVAL "return 'test'" 0
# Dovrebbe dire: (error) ERR unknown command 'EVAL'
Controlla la Tua Sicurezza di Rete
root@kitploit:~
# Verifica se Redis è accessibile dalla rete
nmap -p 6379 il-tuo-server-redis
# Testa se la password è richiesta
redis-cli -h il-tuo-server-redis -p 6379 ping
# Dovrebbe chiedere la password
Come Riconoscere Questo Attacco
Segni nella Tua Rete
Modelli aumentati di utilizzo di script Lua
Qualcuno che invia script molto grandi o complicati
Molti script che girano molto velocemente
Script chiaramente sospetti
Segni sul Tuo Server
Redis continua a crashare o riavviarsi
L'utilizzo della memoria che salta su e/o giù
Redis che fa connessioni di rete strane
File accessibili che non dovrebbero esserlo
Controlla i Tuoi Log
root@kitploit:~
# Cerca attività strana di script Lua
grep -i "eval\|evalsha" /var/log/redis/redis.log
# Controlla i tentativi di accesso falliti
grep -i "auth" /var/log/redis/redis.log
# Cerca errori negli script
grep -i "script" /var/log/redis/redis.log
Quanto È Difficile Sfruttare Questo?
È Abbastanza Complicato (se non sai cosa sta succedendo)
Devi capire come funziona Redis internamente
Trucchi di Memoria: Devi interferire con come Redis gestisce la memoria
Competenze Lua: Devi essere bravo a scrivere script Lua
Tempismo Perfetto: Devi attivare il bug esattamente nel momento giusto
Come Sono Fatti gli Exploit Reali
Crea Modelli di Memoria Strani: Scrivi script Lua che fanno organizzare la memoria a Redis in modi specifici
Inganna il Processo di Pulizia: Fai pulire la memoria a Redis nel momento sbagliato
Rompi la Memoria: Fai usare a Redis memoria che è già stata eliminata
Esegui il Tuo Codice: Usa la memoria rotta per eseguire qualsiasi cosa tu voglia
Quanto È Grave Davvero?
Cosa Succede Se Vieni Hackerato
Controllo Totale: Gli hacker possono eseguire qualsiasi cosa vogliano sul tuo server
Tutti i Tuoi Dati: Possono vedere tutto nel tuo database Redis
Diffusione ad Altri Server: Potrebbero usare il tuo server per attaccare altre cose
Rimanere Nascosti: Possono mantenere l'accesso anche dopo che pensi di aver risolto
Cosa Significa Questo per la Tua Attività
Dati Divulgati: Tutte le tue informazioni sensibili potrebbero essere rubate
Tutto Si Rompe: Il tuo servizio Redis potrebbe smettere di funzionare
Problemi Legali: Potresti essere multato per non aver protetto i dati
Nessuno Si Fida di Te: I clienti potrebbero andarsene se lo scoprono
Andiamo sul Tecnico
Quali Parti di Redis Sono Rotte
Il motore di scripting Lua (comandi eval e evalsha)
Come Redis gestisce la memoria
Il sistema di garbage collection (pulisce la memoria inutilizzata)
Come Viene Rotta la Memoria
Il bug accade quando:
Crei modelli specifici di oggetti in Lua
Interferisci con come Redis conta i riferimenti alla memoria
Forzi Redis a pulire la memoria nel momento sbagliato
Sfrutti il tempismo di quando Redis gestisce la memoria
Quali Versioni Sono Colpite
Redis versione 8.2.1 e precedenti
Qualsiasi versione con lo scripting Lua attivato
Questo bug esiste da circa 13 anni (accidenti!)
Come Sono Fatti gli Exploit (Per Imparare)
Struttura Base (Questo Non Funzionerà Davvero)
root@kitploit:~
-- Questo è solo per mostrarti come è fatta la struttura
local function create_memory_pattern()
-- Crea oggetti che interferiscono con la pulizia della memoria di Redis
local objects = {}
for i = 1, 1000 do
objects[i] = {data = "pattern_" .. i}
end
return objects
end
local function trigger_gc()
-- Forza Redis a pulire la memoria nel momento sbagliato
collectgarbage("collect")
-- È qui che accade il bug di memoria
end
-- Struttura principale dell'attacco
local objects = create_memory_pattern()
-- Interferisci con i riferimenti di memoria
-- Forza la garbage collection
-- Usa la memoria rotta per eseguire codice
Come Proteggerti
Blocca la Tua Rete
Imposta regole firewall
Non lasciare che Redis parli con tutto internet
Controlla il traffico di rete
Attiva la registrazione dei log
Controlla Chi Può Accedere
Usa password forti
Imposta permessi utente (ACL)
Dai alle persone solo l'accesso di cui hanno bisogno
Controlla regolarmente chi ha accesso
Controlla per Problemi
Guarda i tuoi log
Monitora le prestazioni di Redis
Controlla comportamenti strani
Avere un piano per quando le cose vanno male
Vuoi Testare Questo in Sicurezza?
Se vuoi vedere come funziona senza rompere nulla di reale, puoi usare Docker:
root@kitploit:~
# Avvia un Redis di test (questo è vulnerabile)
docker run -d --name redis-test -p 6379:6379 redis:6.0
# Testalo
cd scanner
./rscan -host localhost -port 6379
# Ferma quello vulnerabile e avvia uno corretto
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
# Pulisci quando hai finito
docker stop redis-fixed && docker rm redis-fixed
Roba Fancy (Se La Vuoi)
Tutte le Opzioni
root@kitploit:~
cd scanner
./rscan --help
Scansione di Più Server
Crea un file hosts.txt così:
root@kitploit:~
# Metti qui i tuoi server
server1.com
server2.com:6380
192.168.1.100
redis.example.com:6379
Rendilo Più Veloce
root@kitploit:~
# Usa più worker per scansionare più velocemente (se hai molti server)
./rscan -host server1.com,server2.com -workers 20