Como funciona um ataque de path traversal

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 ou path.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.

Postar um comentário

0 Comentários

Contact form