Lançamos mais 04 novos projetos que serão mantidos por este site! Visite a seção Projetos e saiba mais!
 

Pesquisar

Login






Esqueceu sua senha?
O site Insphpired foi criado com o intuito de publicar artigos diferenciais sobre PHP e sobre tudo que envolve Desenvolvimento Web nesta linguagem.
Easter Eggs e Segurança no PHP Imprimir
Avaliação do Usuário: / 5
PiorMelhor 
Por Ricardo Maia   
12 de abril de 2007

Image É 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!! Undecided

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!!?!?! Yell

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! 




Gostou do artigo? Então compartilhe!
Digg!Reddit!Del.icio.us!Google!Technorati!StumbleUpon!Add this social bookmarking functionality to your website! title=
Última Atualização ( 10 de janeiro de 2008 )
 

Enquete

Quando prazo é um fator limitante no desenvolvimento, qual aspecto normalmente é negligenciado?
 




Add to Technorati Favorites

Feed