Explorar Shellshock com Burp Suite
OWASP Top 10 é um documento de conscientização, que descreve os riscos de segurança mais críticos para aplicações Web. O pentesting é realizado de acordo com o padrão OWASP TOP 10 para reduzir/mitigar os riscos de segurança.
Vamos explorar a vulnerabilidade shellshock, também conhecida como Bashdoor (CVE-2014-6271 e CVE-2014-7169), é uma falha de segurança shell Bash em sistemas Unix-like, que foi divulgada em 24 de setembro de 2014.
A falha consiste em inserir código malicioso dentro de valores que serão armazenados em variáveis de ambiente. Ao inserir código a versão vulnerável do Bash expandia o conteúdo da variável e interpretava o código inserido como instruções a serem executadas.
No exercício, focaremos no OWASP Top Ten A9:2017- Usando componentes com vulnerabilidades conhecidas - OWASP A9 Using Components with Known Vulnerabilities - e realizaremos ataques contra um servidor Web vulnerável ao CVE-2014-6071. Por incrível que pareça, recentemente algumas empresas de segurança alertaram sobre a quantidade de servidores ainda vulneráveis a shellshock.
Objetivo: Explorar a vulnerabilidade e executar comandos arbitrários na máquina alvo.
Host Atacante (kali): 192.107.253.2
Host Alvo: 192.107.253.3
1 - Realizando scan com Nmap
Primeiro vamos verificar as portas abertas com o Nmap:
# nmap 192.107.253.3
Perceba que na saída do comando vemos a porta 80 aberta. Então devemos abrir a página em um browser.
Interessante. O próximo passo é ver o código fonte da página para tentar obter mais alguma informação. Claro que você poderia rodar outras ferramentas como o nikto, dirbuster para analisar a aplicação. Mas uma regra que devemos seguir é "fazer o simples".
Então vemos que tem uma página chamada "gettime.cgi". Que iremos usar em seguida como argumento no Nmap. Agora, será que existe algum script do Nmap para verificar se esse máquina é vulnerável ao shellshock?
Faremos assim:
# updatedb
# locate *.nse | grep shellshock
Tem um script do Nmap, então vamos utilizá-lo para verificar se a máquina é vulnerável. Devemos passar a URI para o script também, conforme pode ser visto na documentação do script.
O comando ficaria assim:
# nmap --script=http-shellshock.nse --script-args uri=/gettime.cgi 192.107.253.3
O servidor é vulnerável a vulnerabilidade de Shellshock - CVE-2014-6271.
2 - Como explorar a Vulnerabilidade de Shellshock?
Vamos procurar exploits para essa vulnerabilidade no Google, usando o seguinte dork:
"shellsh0ck vulnerability exploit"
Tem uma página interessante, onde mostra exemplos de exploração da vulnerabilidade aqui.
Um exemplo simples seria de como ler o conteúdo do arquivo "/etc/passwd" do servidor vulnerável:
curl -H "user-agent: () { :; }; echo; echo; /bin/bash -c 'cat /etc/passwd'" \
http://localhost:8080/cgi-bin/vulnerable
Vemos a indicação da manipulação do cabeçalho HTTP na variável "user-agent:
3 - Explorando com Burpsuite
Iremos iniciar o burpsuite. Basta clicar no ícone do Kali e digitar "burpsuite". Quando iniciado, clique na aba "Proxy". Estará tudo em branco ainda.
Agora abrir o browser, você deve ter configurado o FoxyProxy para enviar as requisições para o BurpSuite, quando acessar a página será enviado a requisição pelo Burp.
Vamos manipular agora essa requisição enviando para o repetidor do Burp. Clique em Action, depois Send to Repeater. A aba Repeater será acionada. Clique nela.
Na aba Repeater, vamos apagar o conteúdo de User-Agent e inserir o comando para verificar o conteúdo do arquivo /etc/passwd. Clique em Send e aguarde o resultado.
Sucesso! Conseguimos rodar um comando na aplicação vulnerável. Agora podemos rodar outros comandos como 'id', 'uname -a' e etc.