Pular para o conteúdo
Todos os conceitos

Path traversal

Usar `..` para sair da pasta que o site pretendia servir e ler outros arquivos.

Muitos sites deixam você baixar um arquivo passando o nome dele no endereço:

/ver?arquivo=aviso.txt

Por dentro, o site junta esse nome a uma pasta fixa, por exemplo documentos/, e abre documentos/aviso.txt. O problema é quando o site não limpa o nome antes de usá-lo.

Em caminhos de arquivo, .. significa "a pasta de cima". Então, pedindo:

/ver?arquivo=../config.txt

o site monta documentos/../config.txt, que o sistema entende como config.txt fora da pasta de documentos. Com vários ../ dá para subir ainda mais. Isso se chama path traversal (travessia de diretório): sair da pasta pretendida para ler arquivos que não eram para você.

A defesa é nunca confiar no nome vindo do usuário: remover os .., aceitar só o nome do arquivo (sem barras) e, no fim, conferir se o caminho resultante ainda está dentro da pasta certa.

Aparece nestes desafios