curl -H "User-Agent: () { :; }; sudo /bin/eject" http://example.com/
Não funcionaria porque não foi possível encontrar sudo
.
curl -H "User-Agent: () { :; }; /usr/bin/sudo /bin/eject" http://example.com/
conseguiria invocar sudo
, mas a menos que o administrador tenha configurado sudo
para permitir que o usuário executando o servidor da Web execute qualquer comando como root
(o que seria a coisa mais insensata a ser feita), faça muito.
Mesmo se o servidor remoto permitisse que o usuário do servidor Web executasse um comando específico como root
, primeiro, você precisaria adivinhar qual é e, mesmo que fosse um script bash
, o ambiente HTTP_USER_AGENT a variável não seria passada a ela mesmo se sudo
fosse configurado com env_reset
desativado porque sudo
sempre lista as variáveis cujo conteúdo começa com ()
.
Embora alguns cenários possam ser imaginados, não há uma forma comum de usar o shellshock para escalonamento de privilégios locais. Veja esta resposta em security.stackexchange para mais detalhes.