Superação em equipe! 17° maratona de revezamento do Pão de Açucar.

Ataques de Path Transversal

8 de Setembro de 2009 às 11:53 TrustSign  | Enviar por e-mail Hits para esta publicação: 1082

O ataque de Path Transversal tem o objetivo de acessar arquivos e diretórios que estão armazenados fora do diretório utilizado pela aplicação (Webroot).

Acessando a aplicação pelo browser o atacante pode olhar os links absolutos para arquivos armazenados no Web Server. Manipulando as variáveis que referencia os arquivos utilizando “dot-dot-slash (../)” utilizando diferentes seqüências e variações podem permitir acesso arbitrário a arquivos e diretórios no file system, incluindo código fonte da aplicação, arquivos críticos e de configuração do sistema operacional entre outros. Utilizando “../” o atacante consegue direcionar a aplicação para diretórios acima do diretório padrão.

Este ataque pode ser potencializado como veremos abaixo utilizando um código malicioso externo que pode ser injetado diretamente como variável na aplicação, sendo este ataque conhecido também como RFI (Remote File Injection). Este tipo de vulnerabilidade pode ser detectada facilmente utilizando scripts chamados de Spider/Crawler.

Vejamos abaixo dois exemplos clássicos desta falha.

Exemplo 1
O exemplo abaixo mostra como uma aplicação manipula recursos em uso.

http://site/get-files.jsp?file=report.pdf
http://site/get-page.php?home=aaa.html
http://site/some-page.asp?page=index.html

Neste exemplo é possível inserir a string maliciosa como parâmetro da variável a fim de acessar arquivos localizados fora do diretório onde estão publicados os arquivos web.

http://site/get-files?file=../../../../diretorio/arquivo
http://site/../../../../diretorio/arquivo

A URL abaixo mostra como explorar um sistema Unix para pegar seu arquivo de senhas.
http://site/../../../../etc/shadow
http://site/get-files?file=/etc/passwd

Exemplo 2
Vejamos um exemplo clássico de aplicação em PHP vulnerável.
$template = 'blue.php';
if ( is_set( $_COOKIE['TEMPLATE'] ) )
$template = $_COOKIE['TEMPLATE'];
include ( "/home/users/phpconf/templates/" . $template );
?>

Um atacante pode explorar esta vulnerabilidade enviando a seguinte requisição HTTP:

GET /vulneravel.php HTTP/1.0
Cookie: TEMPLATE=../../../../../../../../../etc/passwd

Gerando uma resposta do servidor como esta:

HTTP/1.0 200 OK
Content-Type: text/html
Server: Apache

root:fi3sED95ibqR6:0:1:System Operator:/:/bin/ksh
daemon:*:1:1::/tmp:
phpconf:f8fk3j1OIf31.:182:100:Developer:/home/users/phpconf/:/bin/csh

A repetição dos caracteres ../ apos /home/users/phpconf/templates fez com que a função include() fizesse o include do arquivo /etc/passwd.

Como proteger sua aplicação.

• Preferivelmente trabalhe sem utilizar inputs de usuários na aplicação quando você utilizar file system calls

• Use chroot Jail e políticas de code Access para restringir onde os arquivos podem ser obtidos ou salvos em sua aplicação

• Sanitize todas as variáveis que sua aplicação utiliza impedindo assim que caracteres de escape maliciosos sejam indexados e processados

Publicação arquivada em: Dicas de Segurança

Enviar por e-mail | Hits para esta publicação: 1083

Deixe um Comentário

http://blog.trustsign.com.br/2009/09/08/ataques-de-path-transversal/Você deve estar conectado para publicar um comentário.

Linkar esta publicação  |  Assine os comentários via o RSS


Calendário

Setembro 2009
S T Q Q S S D
« Ago   Out »
 123456
78910111213
14151617181920
21222324252627
282930  

Minhas Publicações Recentes

Publicações por Mês

Estatísticas

Meta