Directory-overgang
Verander de bestandsnaam, klim uit de map, lees wat dan ook.
Wat is Directory-overgang?
Een handler voegt een bestandsnaam uit het verzoek samen in een vaste map en leest alles waarnaar wordt verwezen. Voeg een paar ../ -segmenten toe en het resultaat bevindt zich buiten de map die de ontwikkelaar in gedachten had. U ruilt een factuurnaam voor ../../../etc/passwd op een factureringseindpunt en krijgt het systeemaccountbestand terug. Vervolgens repareert u het: besluit naar de canonieke vorm met path.resolve en bevestig dat het resultaat nog steeds in de bedoelde map staat voordat u een byte leest. Het verwijderen van .. uit de string is niet dezelfde controle.
Wat je leert in Directory-overgang
- Herkennen van directory-traversal als resultaat van het samenvoegen van gebruikersinvoer op een bestandssysteempad zonder canonicalisatie of containmentcontroles
- Lees een handler en identificeer het onveilige pad-aaneenschakelingspatroon
- Begrijp waarom een tekenreeksfilter dat .. afwijst, verliest van gecodeerde segmenten en absolute paden
- Pas de oplossing 'canonicaliseren en vervolgens verifiëren' toe: los het pad op en bevestig dat het in de beoogde map blijft voordat u het leest
- Controleer elk lees- of schrijfbestand waarvan het pad is opgebouwd uit aanvraaggegevens
Directory-overgang — Trainingsstappen
-
Zoek de downloadfunctie
Halvora is een factureringsplatform en elke klant kan zijn eigen facturen downloaden vanaf een zelfbedieningspagina. Bob heeft een gewone Halvora-rekening. Hij opent de functie voor het downloaden van facturen om te zien hoe deze zich gedraagt voordat hij deze aanraakt.
-
Download een normale factuur
Kijk eerst hoe de functie zich normaal gedraagt. Bob downloadt een van zijn eigen facturen. Het bestand komt terecht in zijn downloads en het netwerkpaneel van de browser registreert het verzoek dat de pagina heeft verzonden, precies wat een ontwikkelaar ziet in DevTools.
-
De bestandsnaam is slechts een parameter
De factuur kwam terug. Eén detail in het verzoek vertelt Bob hoe hij het moet aanvallen.
-
Knoei met het verzoek en verzend het opnieuw
Bob had de downloadknop nooit nodig. Hij bewerkt het vastgelegde verzoek rechtstreeks, waarbij hij de factuurnaam verwisselt voor een pad dat omhoog klimt vanaf de plek waar de facturen zijn opgeslagen. Elke ../ gaat één map omhoog; genoeg bereiken de root van het bestandssysteem, en van daaruit is etc/passwd het accountbestand dat elke Linux-box heeft.
-
Het bestand komt terug
Het antwoord is geen factuur. Het is het accountbestand van de server, dat van de schijf wordt gelezen en wordt teruggestuurd via dezelfde download die de functie aan elke klant biedt.
-
Kennis check
Je hebt zojuist gezien hoe een gemanipuleerd downloadverzoek het accountbestand van de server retourneerde. Leg vast waarom.
-
De inbreukwaarschuwing
U bent eigenaar van de Halvora-downloadservice voor facturen. Van de ene op de andere dag signaleerde monitoring van gegevensverlies dat het eindpunt de inhoud van een serverbestand retourneerde in plaats van een pdf. Security Operations heeft u de details per e-mail gestuurd.
-
Open de downloadhandler
Open de downloadhandler en kijk hoe deze de bestandsnaam omzet in een bestand op schijf.
-
Zoek de fout
De bestandsnaam wordt samengevoegd in de factuurdirectory en direct gelezen. Niets beperkt het pad, dus een waarde met ../ -segmenten reikt tot buiten de map.
-
Kennis check
Voordat u de geleider aanraakt, moet u duidelijk maken waarom de snelle patch niet de oplossing is.
Dekking van beveiligingsframeworks
OWASP Top 10
- A01:2025 Broken Access Control
- A01:2021 Broken Access Control
CWE
- CWE-22 Improper Limitation of a Pathname to a Restricted Directory
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security