terça-feira, 7 de outubro de 2014

Yo wa Shock: Analisando o Shellshock!

Nesta postagem eu vou estar analisando o bug do momento: Shellshock!. Eu também vou fazer uma rápida análise sobre alguns scripts que ja foram disponibilizados publicamente para realizar o ataque (Metasploit).

Observação:

O conteúdo apresentado nesta postagem deve ser reproduzido apenas em um ambiente no qual você possui autorização para a realização de testes de segurança.

ShellShock


O Shellshock explora um bug (alguns consideram como sendo uma funcionalidade) do bash (presente em sistemas Linux e Mac OS X). Para entender melhor a vulnerabilidade vamos dividir a análise em 2 partes: Definição de funções e exploração da vulnerabilidade.

Definição de funções e variáveis de ambiente


No bash podemos definir uma função da seguinte forma:

Figura 01: Definindo uma função
Esta função entretanto não pode ser chamada em uma nova sessão do bash 

Figura 02: Chamando função em nova sessão
Para conseguirmos chamar uma função entre diferentes sessões do bash, precisamos exportar a função como uma nova variável de ambiente.

Figura 03: Exportando a função

 

Explorando a vulnerabilidade


É possível "injetar" mais instruções após o término da definição da função exportada. Os códigos injetados serão executados quando a nova variável de ambiente for processada. A figura 04 apresenta um exemplo no qual um comando ("echo Owned") é injetado após a definição de uma função vazia. Como resultado, o comando injetado é executado pela nova sessão (bash -c).

Figura 04: Injetando comando na variável de ambiente
A figura 05 apresenta mais um exemplo no qual o comando "uname -a" é injetado na definação de uma variável de ambiente.

Figura 05: Injetando comando na varíavel de ambiente 02

 

Exploits publicados: Metasploit 


O pessoal do Metasploit ja publicou alguns módulos (auxiliary) para o ShellShock. Eu vou pegar o módulo "apache_mod_cgi_bash_env" como exemplo. A figura 06 apresenta as opções básicas do módulo.

Figura 06: Módulo apache_mod_cgi_bash_env
O script foi feito para scannear servidores web com arquivos cgi e passa o comando injetado (parâmetro CMD) no 'User-Agent' do cabeçalho HTTP (como demonstrado na figura 07).

Figura 07: Payload no cabeçalho HTTP

Conclusão


Nesta postagem eu fiz uma pequena análise sobre o Shellshock e também demonstrei um módulo do Metasploit publicado para explorar esta vulnerabilidade. Acredito que o Shellshock e o HeartBleed ja podem ser considerados os maiores bugs de 2014 (Mas ainda estamos em Outubro hehehe). Por favor escrevam suas sugestões e comentários!

Obrigado :)

Keep Hacking!

Nenhum comentário:

Postar um comentário