Directory Traversal er en sårbarhed, hvor en angriber kan tilgå filer og mapper uden for det tiltænkte bibliotek ved at manipulere filstier. Angrebet bruges til at læse, og i nogle tilfælde skrive eller eksekvere, følsomme filer på serveren.
Det er et klassisk input‑valideringsproblem med høj impact.
Directory traversal opstår, når brugerinput indgår direkte i filsystem‑operationer uden korrekt validering eller normalisering.
Typisk udnyttes sekvenser som:
../
..\\
URL‑encodede varianter (%2e%2e%2f)
Dobbelt encoding
Unicode‑varianter
Formålet er at “traversere” opad i mappestrukturen og bryde den logiske sandbox.
Sårbarheden ses ofte i:
Fil-download endpoints
Billed‑ eller dokumentvisning
Log‑viewers
Backup‑ og export‑funktioner
Legacy PHP‑ og Java‑applikationer
Typiske årsager:
Blind tillid til brugerinput
Manglende path normalisering
String‑baseret validering i stedet for canonical paths
Manglende sandboxing på OS‑niveau
Læsning af konfigurationsfiler (.env, web.config)
Eksponering af credentials og API‑nøgler
Læk af kildekode
Mulighed for privilege escalation
Databrud
Total kompromittering af applikationen
Driftsnedbrud
Reputationsskade
Overtrædelse af GDPR og databeskyttelseskrav
Alvorlig audit finding
/download?file=../../../../etc/passwd
/logs?name=../../storage/logs/laravel.log
..%252f..%252f.env
Identificer endpoint med filsti som input
Test for traversal‑sekvenser
Bypass simple filters (encoding)
Læs følsomme filer
Eskaler til fuldt kompromis
Directory traversal er ofte første skridt mod LFI (Local File Inclusion) eller RCE (Remote Code Execution).
Regex‑baseret filtrering alene
Blacklists af ../
Frontend‑validering
Skjulte inputfelter
Angriberen tilpasser payloads.
Resolve absolut sti server‑side
Verificer at stien starter i tilladt base‑directory
Brug faste fil‑ID’er i stedet for filnavne
Map ID → sti internt
Webserveren må kun have adgang til nødvendige mapper
Separate runtime‑, config‑ og data‑directories
Chroot / containers
AppArmor / SELinux
Read‑only mounts hvor muligt
Brug indbyggede storage‑abstraktioner
Undgå direkte filsystem‑kald med brugerinput
Directory traversal er en gammel sårbarhed, men:
Den findes stadig i produktion
Den er let at automatisere
Konsekvensen er ofte total kompromittering
Små shortcuts i filhåndtering giver store risici.
Udfordring: Legacy‑kode med direkte filstier
Løsning: Introducer et isolerende service‑lag
Udfordring: Performance‑hensyn
Løsning: Canonical path‑checks er billige
Udfordring: “Det er kun interne filer”
Løsning: Antag altid ekstern misbrug
Directory traversal handler om grænser.
Hvis brugeren kan bestemme filstien, har du allerede tabt kontrollen.
Sikker filhåndtering kræver:
Validering
Isolering
Princip of least privilege