Pular para o conteúdo

Linux

Shellshock, a função que virou comando

Em 2014, o Shellshock (CVE-2014-6271) mostrou que o próprio Bash podia ser enganado por uma variável de ambiente. O Bash permitia guardar uma função dentro de uma variável de ambiente, e a função era importada quando o shell começava. O bug: o Bash antigo não parava no fim da função. Tudo que viesse DEPOIS da chave } de fechamento ele executava na hora. Como servidores web passam os cabeçalhos do pedido para os scripts CGI como variáveis de ambiente, bastava mandar um cabeçalho com o formato certo para rodar comando no servidor.

Você tem env-value.txt (a variável de ambiente que chega ao processo), cgi-notes.txt (como o CGI vira variável de ambiente) e shellshock_demo.py, um reprodutor de brinquedo que imita o Bash antigo e o corrigido, sem chamar shell de verdade. Rode o reprodutor com python3 shellshock_demo.py e diga o que o comando escondido depois do } imprime quando o Bash vulnerável o executa.

Responda no formato de flag com essa palavra, por exemplo tocaia{demo-only} (que não é a resposta).

Arquivos do desafio

  • env-value.txt

    315 B · SHA-256 ced4f6d9e348fd4e…

    Baixar
  • cgi-notes.txt

    465 B · SHA-256 4898cf094720c142…

    Baixar
  • shellshock_demo.py

    1,6 KB · SHA-256 593064157512242b…

    Baixar

Exemplo resolvido

Este desafio vem com a solução em passos. Abra um de cada vez e tente o próximo sozinho antes de abrir. Cada passo aberto conta como ajuda no seu rating.

  1. Passo 1 Veja o valor que chega

  2. Passo 2 Separe a função do resto

  3. Passo 3 Rode o reprodutor

Tudo se resolve com ferramentas gratuitas.