Ataques por manipulação de URL

Setembro 2015

Introdução às URL

A URL (Uniforme Recurso Localizador) de uma aplicação web é o vector que permite indicar o recurso pedido. Tratam-se de caracteres ASCII que se podem imprimir e que se decompõe em cinco partes:

  • O nome do protocolo: quer dizer, em certa medida, a linguagem utilizada para comunicar na rede. O protocolo mais utilizado é o protocolo HTTP (HyperText Transfer Protocol), o protocolo que permite trocar páginas Web no formato HTML. Numerosos outros protocolos são contudo utilizáveis (FTP, News, Mailto, etc.)
  • Identificador e palavra-passe: permite especificar os parâmetros de acesso a um servidor protegido. Esta opção é desaconselhada porque a palavra-passe circula de forma clara no URL
  • O nome do servidor: Trata-se do nome de domínio do computador que aloja o recurso pedido. Note que é possível utilizar o endereço IP do servidor.
  • O número de porta: trata-se de um número associado a um serviço que permite ao servidor saber que tipo de recurso é pedido. A porta associada por defeito ao protocolo é a porta número 80. Assim, quando o serviço Web do servidor é associado ao número de porta 80, a especificação do número de porta é facultativa.
  • O caminho de acesso ao recurso: Esta última parte permite ao servidor conhecer o lugar onde está situado o recurso, quer dizer, geralmente o lugar (directório) e o nome do ficheiro pedido.


Um URL possui a seguinte estrutura:



Protocolo Palavra passe(facultativa) Nome do servidor Porta
(facultativo se 80)
Caminho
http://user:password@pt.kioskea.net:80/glossair/glossair.php3



A URL pode permitir a transmissão de parâmetros ao servidor, fazendo seguir o nome de ficheiro por um ponto de interrogação, e depois dados em formato ASCII. Uma URL é assim uma cadeia de caracteres com o seguinte formato:

http://pt.kioskea.net/forum/index.php3?cat=1&page=2</code>  

Manipulação de URL

Manipulando certas partes de uma URL, um pirata pode levar um servidor web a emitir páginas web às quais não é suposto ter acesso.


Com efeito, nos sites web dinâmicos os parâmetros são, na sua maioria, passados através da URL como segue:

http://cible/forum/index.php3?cat=2</code>  



Os dados presentes na URL são criados automaticamente pelo site e, aquando de uma navegação normal, um utilizador apenas clica nas ligações propostas pelo site web. Assim, se um utilizador alterar manualmente o parâmetro, pode tentar diferentes valores, como por exemplo:

http://cible/forum/index.php3?cat=6</code>  


Se o criador não antecipou esta eventualidade, o pirata pode, eventualmente, ter acesso a um espaço normalmente protegido.


Além disso, o pirata pode levar o site a tratar um caso inesperado, como por exemplo:

http://cible/forum/index.php3?cat=***********


No caso acima, se o criador do site não tiver previsto a possibilidade de o dado não ser um número, o site pode entrar num estado não previsto e revelar informações numa mensagem de erro.

Tentativas às cegas

Um pirata pode eventualmente testar directórios e extensões de ficheiro às cegas, para encontrar informações importantes. Eis alguns exemplos clássicos:

http://cible/admin.cgi</code>
  • Procura de script que permita revelar informações sobre o sistema distante:
    http://cible/phpinfo.php3</code>  
    
  • Procura de cópias de salvaguardas. A extensão .bak é utilizada geralmente e não é interpretada por defeito pelos servidores, o que pode conduzir à afixação de um certificado:
    http://cible/index.php3.bak</code>  
    
  • Procura de ficheiros do sistema distante escondidos. Sob os sistemas UNIX, quando o directório raiz do site corresponde ao directório de um utilizador, é possível que ficheiros criados pelo sistema sejam acessíveis através da web:
    http://cible/.bash_history 
http://cible/.htaccess</code>

Cruzamento de directórios

Os ataques chamados “Cruzamento de directórios” (em inglês directory traversal ou path traversal) consistem em alterar o caminho da arborescência na URL para forçar o servidor a aceder a secções não autorizadas do site.


Num caso clássico, o utilizador pode ser levado a subir progressivamente na arborescência, nomeadamente se o recurso não é acessível, por exemplo:

http://cible/base/test/ascii.php3   
http://cible/base/test/   
http://cible/base/</code>  



Nos servidores vulneráveis, basta subir o caminho com várias cadeias do tipo« ../ » :

http://cible/../../../../repertoire/fichier</code>  



Ataques mais evoluídos consistem em codificar certos caracteres:


Numerosos sites dinâmicos passam o nome das páginas a afixar em parâmetro sob uma forma próxima da seguinte:

http://cible/cgi-bin/script.cgi?url=index.htm</code>  



Por muito pouco que um controlo não seja realizado, é possível que um pirata altere a URL manualmente a fim de pedir o acesso a um recurso do site ao qual não tem acesso directamente, por exemplo:

http://cible/cgi-bin/script.cgi?url=script.cgi</code>  



Desfiles

Para proteger um servidor web contra os ataques por manipulação de URL, é necessário efectuar uma vigilância sobre as vulnerabilidades e aplicar regularmente as correcções fornecidas pelo editor do servidor web.


Além disso, uma configuração meticulosa do servidor web permite evitar que um utilizador navegue em páginas às quais não é suposto ter acesso. Assim, o servidor web deve ser configurado seguindo as instruções seguintes:

  • Impedir o percurso das páginas situadas debaixo da raiz do site web (mecanismo de chroot);
  • Desactivar a afixação dos ficheiros presentes num directório não contendo ficheiro de índices (“Directory Browsing”);
  • Suprimir os directórios e ficheiros inúteis (entre os quais os ficheiros escondidos);
  • Assegurar-se que o servidor protege o acesso aos directórios que contêm dados sensíveis;
  • Suprimir as opções de configuração supérfluas;
  • Assegurar-se que o servidor interpreta correctamente as páginas dinâmicas, incluindo os ficheiros de salvaguarda (.bak);
  • Suprimir os intérpretes de scripts supérfluos;
  • Impedir a consulta em modo HTTP das páginas acessíveis em HTTPS.
Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Ataques-por-manipulacao-de-url .pdf

Veja também


URL manipulation attacks
URL manipulation attacks
Ataques de manipulación de URL
Ataques de manipulación de URL
Angriffe per Manipulation der URL
Angriffe per Manipulation der URL
Attaques par manipulation d'URL
Attaques par manipulation d'URL
Attacchi da manipolazione d'URL
Attacchi da manipolazione d'URL
Este documento, intitulado « Ataques por manipulação de URL »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.