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:
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/
http://cible/phpinfo.php3</code>
http://cible/index.php3.bak</code>
http://cible/.bash_history
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:
http://cible/..%2F..%2F..%2Frepertoire/fichier</code>
http://cible/..%u2216..%u2216repertoire/fichier</code>
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: