📖
Introducao à segurança digital
  • Introdução à Segurança Digital
  • Introdução a Linux
  • Criptografia
    • Introdução
    • Definições e Objetivos
    • Criptografia Clássica
    • Criptografia Moderna
    • Guia de Python para criptografia
  • Redes
    • Ataques
      • Arp Cache Poisoning
      • DNS Cache Poisoning
      • Slow Loris
      • Syn Flood
      • WPA Cracking
      • Deauth
    • Ferramentas
      • Resumo das Ferramentas
      • Suíte Aircrack
      • Wireshark
      • Netcat
      • Nmap
      • Netstat
      • Kathará
    • Pacote & Protocolo
    • Camada de Rede
    • Camada de Transporte
    • IANA
    • Three-way Handshake
    • DHCP
    • DNS
    • NAT
    • Pentest
      • FTP
      • SMB
      • SSH
      • VPN
    • Avançado
  • Web
    • Semana 1
      • Introdução à Web
      • Entendendo as URLs
      • Introdução ao HTML e ao CSS
      • Directory Traversal
      • Introdução ao Javascript
      • Cross Site Scripting (XSS)
      • Cookies e sessões
      • Protocolo HTTP
      • Protocolo HTTPS
      • 2020 - XML External Entities (XML) Injection
    • Semana 2
      • Servidores Web
      • PHP (Programação server-side)
      • Command Injection
      • Cookie Poisoning
      • Bancos de Dados
      • SQL Injection
      • Insecure Direct Object Reference (IDOR)
      • 2020 - Portas e Serviços
      • 2020 - API's e Serviços Rest
  • CTF
  • Engenharia Reversa
    • Arquivos
    • Registradores e tipos de dados
    • Hello World em x86
    • Pilha
    • GDB
    • Ghidra
  • Pwning
    • Integer Overflow
    • Buffer Overflow
    • Pwntools
    • Shellcode
    • Proteções
  • Hardware
    • Introdução ao Hardware Hacking
    • Introdução ao Infravermelho
Powered by GitBook
On this page
  • O que é "Directory traversal"?
  • Lendo arquivos com directory traversal:
  • Obstáculos contra essa vulnerabilidade

Was this helpful?

  1. Web
  2. Semana 1

Directory Traversal

PreviousIntrodução ao HTML e ao CSSNextIntrodução ao Javascript

Last updated 4 years ago

Was this helpful?

O que é "Directory traversal"?

Directory traversal é uma vulnerabilidade em que o atacante consegue acesso a arquivos arbitrários do server que está rodando um programa. Então, nesta vulnerabilidade é possível acessar documentos do diretório raíz.

https://upload.wikimedia.org/wikipedia/commons/d/df/Directory_traversal.png

Lendo arquivos com directory traversal:

Para carregar uma imagem em uma página web, pode ser usado HTML:

<img src="loadImage?filename=ganesh.png">

É possível ver que há um parâmetro filename, que é o nome do documento da imagem que será mostrada na página.

Para acessar a imagem, o programa percorre um caminho até a imagem, um exemplo seria:

*/var/www/images/ganesh.png*

Caso não haja medidas de defesa contra esta vulnerabilidade, alguém mal intencionado pode requisitar outros arquivos da seguinte forma:

[https://icmc.com.br/loadImage?filename=../../../etc/passwd](https://insecure-website.com/loadImage?filename=../../../etc/passwd)

Com esta requisição, ao invés de seguir o caminho anterior, a máquina seguirá o seguinte caminho:

/var/www/images/../../../etc/passwd

Assim como no terminal, (../) indica que a máquina acessará o diretório pai ao atual, e por ter três (../), o computador acessará a root, e o que realmente é lido é:

/etc/passwd

Esta localização acima, em sistemas operacionais baseados em Unix, contém informações privadas do usuário, por isso o exemplo contém estes nomes.

No Windows, pode ser usado tanto (../) quanto (..\) e ao invés de /etc/passwd seria \windows\win.ini

Obstáculos contra essa vulnerabilidade

  • Bloqueio de directory traversal sequences:

    • Para evitar a vulnerabilidade, a página pode bloquear sequencias de (../), então duas coisas podem ser feitas:

  • Bloqueio de chars ou URL-encoding:

    Alguns caracteres podem ser limitados por filtros, para impedir a exploração desta vulnerabilidade, porém é possível burlar estes filtros com versões codificadas dos caracteres proibidos:

    Encoding and double encoding:

    • %2e%2e%2f representa ../;

    • %2e%2e/ representa ../;

    • ..%2f representa ../;

    • %2e%2e%5c representa ..\;

    • %2e%2e\ representa ..\;

    • ..%5c representa ..\;

    • %252e%252e%255c representa ..\;

    • ..%255c representa ..\;

      Entre outros exemplos;

      URL encoding:

    • ..%c0%af representa ../;

    • ..%c1%9c represents ..\;

      Referências:

Ao invés de usar (../), usar (....//), pois é equivalente ao anterior e dependendo do filtro, conseguiria passar por ele (Ex: [ );

testar se é possível usar o caminho absoluto, desde a root (Ex: [);

https://icmc.com.br/loadImage?filename=](https://insecure-website.com/loadImage?filename=../../../etc/passwd)....//....//....//etc/passwd
https://icmc.com.br/loadImage?filename=](https://insecure-website.com/loadImage?filename=../../../etc/passwd)/etc/passwd\
What is directory traversal, and how to prevent it? | Web Security Academy
Path Traversal