Um ataque de path traversal (ou directory traversal) funciona explorando falhas na validação de dados fornecidos pelo usuário, permitindo que um invasor injete sequências de caracteres como ../ (ponto-ponto-barra) para escapar do diretório raiz da aplicação web e ler arquivos sensíveis do sistema operacional do servidor, como senhas, códigos-fonte e arquivos de configuração.
Principais Aprendizados
- O ataque manipula variáveis de entrada (como URLs ou formulários) que referenciam arquivos.
- A sequência
../instrui o servidor a subir um nível na estrutura de diretórios. - A prevenção exige a validação rigorosa de inputs (allowlisting) e o uso de funções seguras de resolução de caminhos.
A anatomia do Path Traversal (Directory Traversal)
Para entender como essa falha ocorre, precisamos olhar para a forma como as aplicações web lidam com arquivos. Muitas vezes, um site precisa carregar imagens, documentos ou templates dinamicamente. Para isso, o desenvolvedor cria uma função que recebe o nome do arquivo como parâmetro.
O problema surge quando o servidor confia cegamente nesse parâmetro sem sanitizá-lo. Em sistemas operacionais baseados em Unix (como Linux) e Windows, a sequência de caracteres ../ significa "subir um diretório". Se um invasor insere múltiplos ../, ele consegue "navegar" para trás, saindo da pasta pública do site (como /var/www/html/) e acessando a raiz do sistema.
Exemplo prático: Como os hackers exploram a falha
Imagine um site de e-commerce que carrega a imagem de um produto através da seguinte URL:
https://site-vulneravel.com/carregar?arquivo=produto.png
O servidor backend pega o valor "produto.png", anexa ao diretório base das imagens (ex: /var/www/imagens/) e retorna o arquivo. No entanto, se o site não possuir defesas, um atacante pode modificar a URL para:
https://site-vulneravel.com/carregar?arquivo=../../../etc/passwd
Neste cenário, o servidor tentará buscar o arquivo em /var/www/imagens/../../../etc/passwd. O sistema operacional resolve os ../, subindo três níveis, e acaba lendo o arquivo /etc/passwd, que contém as informações dos usuários do servidor Linux. Compreender como esses vetores operam é essencial ao estudar as falhas web mais críticas do mercado.
Qual o impacto de um Path Traversal bem-sucedido?
O impacto financeiro e de reputação de um ataque de Path Traversal pode ser devastador. Segundo a classificação do MITRE CWE-22 (Improper Limitation of a Pathname to a Restricted Directory), essa vulnerabilidade permite o comprometimento total da confidencialidade do servidor.
Os invasores geralmente buscam:
- Arquivos de configuração: Para roubar credenciais de banco de dados e chaves de API.
- Código-fonte: Para analisar a aplicação em busca de outras vulnerabilidades (engenharia reversa).
- Logs do sistema: Para entender a infraestrutura ou apagar rastros.
Detectar essa falha é um dos principais objetivos durante um teste de invasão focado em aplicações web, pois ela atua como uma porta de entrada para ataques mais complexos.
Diferença entre Path Traversal e LFI (Local File Inclusion)
Embora frequentemente confundidos, eles possuem uma diferença técnica sutil. O Path Traversal permite apenas a leitura de arquivos do servidor. Já o Local File Inclusion (LFI) ocorre quando a aplicação não apenas lê, mas executa o arquivo incluído. Se um atacante conseguir fazer o upload de um script malicioso e depois usar o LFI para incluí-lo, ele obterá Execução Remota de Código (RCE).
Como prevenir ataques de Path Traversal
A defesa contra o Directory Traversal exige uma abordagem de defesa em profundidade. O erro comum é tentar filtrar apenas os caracteres ../, pois invasores podem usar técnicas de encoding (como %2e%2e%2f) para burlar filtros simples. A lógica de proteção é muito similar à prevenção de falhas que visam expor dados de forma não autorizada.
As práticas recomendadas pela documentação oficial da OWASP incluem:
- Evitar o repasse direto: Nunca passe dados inseridos pelo usuário diretamente para APIs do sistema de arquivos.
- Usar listas de permissão (Allowlist): Se o usuário precisa escolher entre três arquivos, valide se o input corresponde exatamente a uma dessas três opções.
- Resolução segura de caminhos: Utilize funções nativas da linguagem (como
realpath()no PHP oupath.normalize()no Node.js) para resolver o caminho absoluto e, em seguida, verifique rigorosamente se o caminho resultante começa com o diretório base permitido.
Perguntas Frequentes
O que significa a sequência ../ em TI?
Em sistemas operacionais como Linux e Windows, a sequência de caracteres ../ (ponto-ponto-barra) é um comando de navegação que instrui o sistema a subir um nível na hierarquia de diretórios (pastas).
Um Web Application Firewall (WAF) bloqueia Path Traversal?
Sim, a maioria dos WAFs modernos possui assinaturas para detectar e bloquear sequências comuns de Path Traversal (como ../ e suas variações codificadas). No entanto, um WAF não substitui a necessidade de corrigir a vulnerabilidade no código da aplicação.
Path Traversal é o mesmo que RCE?
Não. Path Traversal permite apenas a leitura não autorizada de arquivos. RCE (Remote Code Execution) permite que o invasor execute comandos no servidor. No entanto, um Path Traversal pode levar a um RCE se o atacante conseguir ler arquivos de configuração que revelem senhas para acessar o servidor.
0 Comentários