|
É prática comum entre muitos desenvolvedores de software incluem easter eggs em seus aplicativos.
Um Easter Egg ou "Ovo de Páscoa" são brincadeiras incluídas propositadamente com a finalidade de que sejam descobertas como diversão, similar à prática de "Caça aos Ovos" realizada em muitos países.
O que discutiremos aqui é como essa inocente brincadeira pode expor dados importantes de um servidor web a um atacante e com isso facilitar suas ações.
Bem, essa "pesquisa" que realizei iniciou com uma pergunta feita numa lista sobre PHP. O autor da pergunta queria saber como descobrir a versão do PHP instalada no servidor, com o detalhe que ele não tinha qualquer acesso a upload de arquivos ou coisa do tipo. Portanto, não poderia fazer o upload de uma página com a função phpinfo() para dar essa informação a ele. Fiquei imaginado se havia alguma maneira de obter uma informação estática e ao mesmo tempo única para cada versão do PHP. Lembrei-me de que há algum tempo tinha visto uma matéria sobre easter eggs no PHP. Chegei a testar um deles, que exibia o logo do PHP quado passávamos um determinado valor à uma página PHP pela URL. Algo do tipo http://www.exemplo.com.br/index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 Me perguntei se esta imagem seria ligeiramente diferente entre versões do PHP mas exatamente igual numa mesma versão. Pra quê? Se confirmada essa idéia eu poderia criar "assinaturas" para cada imagem e correlacioná-las a sua respectiva versão. A "assinatura" seria feita através do cálculo de hash da imagens, feito com a ferramenta tipo md5sum. Mãos à obra. Acessei diferentes sites os quais eu conhecia a versão do PHP instalada, chamei o easter egg da logo e baixei as imagens para comparação. Nada feito! Eram todas exatamente iguais!!  Sem me dar por satisfeito procurei outra forma de fazer isso. De cara já descartei os easter eggs de imagem. Fui verificar a página de créditos, acessível como http://www.exemplo.com.br/index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000. Desta vez achei o que estava procurando!!! As páginas de créditos do PHP variavam de versão para versão, mas eram idênticas dentro daquela versão, mesmo em sites diferentes. Então criei "assinaturas" para algumas versões do PHP e escrevi um pequeno script para detectar automaticamente as vesões. Tudo bem... mas ainda não entendi onde está a vulnerabilidade!!?!?!  Uma das etapas durante o comprometimento de segurança de um servidor é verificar que serviços ele dispõe e qual a versão do software instalado, de modo que se possa buscar falhas para aquela versão específica. Por isso expor a versão do PHP, do Apache, do MySQL ou qualquer outra coisa, pode ser um risco! Agora sim! Mas como é que eu faço pra resolver isso? Basta modificar a diretiva expose_php como OFF no arquivo php.ini. Esta diretiva liga ou desliga a assinatura do PHP nos cabeçalhos do servidor web, bem como liga/desliga todos os easter eggs. Então abra seu arquivo php.ini e modifique a linha para expose_php=off. Se quiser testar alguns sites, fiz uma versão online da ferramenta de detecção de versão em: http://www.insphpired.com/projetos/detecta_versao/ EOF!
|