Verzeichnisdurchquerung

Verzeichnisdurchquerung

Ändern Sie den Dateinamen, klettern Sie aus dem Ordner, lesen Sie etwas.

Was ist Verzeichnisdurchquerung?

Ein Handler verknüpft einen Dateinamen aus der Anfrage mit einem festen Verzeichnis und liest, was auch immer darin aufgelöst wird. Fügen Sie ein paar ../ -Segmente hinzu und das Ergebnis liegt außerhalb des Ordners, den der Entwickler im Sinn hatte. Sie tauschen einen Rechnungsnamen für ../../../etc/passwd auf einem Abrechnungsendpunkt aus und erhalten die Systemkontodatei zurück. Dann beheben Sie das Problem: Lösen Sie es mit path.resolve in die kanonische Form auf und vergewissern Sie sich, dass sich das Ergebnis noch im vorgesehenen Ordner befindet, bevor Sie ein Byte lesen. Das Entfernen von .. aus der Zeichenfolge ist nicht dieselbe Prüfung.

Was Sie lernen in Verzeichnisdurchquerung

Verzeichnisdurchquerung — Trainingsschritte

  1. Die Download-Funktion finden

    Halvora ist eine Abrechnungsplattform, und jeder Kunde kann seine eigenen Rechnungen über eine Self-Service-Seite herunterladen. Bob hat ein ganz gewöhnliches Halvora-Konto. Er öffnet die Download-Funktion für Rechnungen, um zu sehen, wie sie sich verhält, bevor er sie anfasst.

  2. Eine normale Rechnung herunterladen

    Zuerst der Normalfall: Bob lädt eine seiner eigenen Rechnungen herunter. Die Datei landet in seinem Download-Ordner, und das Network-Panel des Browsers zeichnet die Anfrage auf, die die Seite geschickt hat — genau das, was ein Entwickler in den DevTools sieht.

  3. Der Dateiname ist nur ein Parameter

    Die Rechnung kommt zurück. Ein Detail in der Anfrage verrät Bob, wo er ansetzen muss.

  4. Die Anfrage manipulieren und erneut senden

    Den Download-Button braucht Bob gar nicht. Er bearbeitet die mitgeschnittene Anfrage direkt und ersetzt den Rechnungsnamen durch einen Pfad, der aus dem Ablageort der Rechnungen herausklettert. Jedes ../ geht ein Verzeichnis nach oben; genügend davon landen an der Wurzel des Dateisystems — und von dort aus ist etc/passwd die Kontendatei, die es auf jedem Linux-System gibt.

  5. Die Datei kommt zurück

    Die Antwort ist keine Rechnung. Es ist die Kontendatei des Servers — von der Platte gelesen und über genau denselben Download ausgeliefert, den die Funktion jedem Kunden anbietet.

  6. Wissenscheck

    Sie haben gerade gesehen, wie eine manipulierte Download-Anfrage die Kontendatei des Servers zurückgegeben hat. Prägen Sie sich ein, warum das möglich war.

  7. Die Meldung zum Sicherheitsvorfall

    Ihnen untersteht der Rechnungs-Download-Dienst von Halvora. Über Nacht hat das Monitoring auf Datenabfluss gemeldet, dass der Endpunkt statt eines PDF den Inhalt einer Serverdatei zurückgibt. Security Operations hat Ihnen die Details per E-Mail geschickt.

  8. Den Download-Handler öffnen

    Öffnen Sie den Download-Handler und sehen Sie sich an, wie er aus dem Dateinamen eine Datei auf der Platte macht.

  9. Die Schwachstelle finden

    Der Dateiname wird an das Rechnungsverzeichnis gehängt und direkt gelesen. Nichts begrenzt den Pfad — ein Wert mit ../ -Segmenten greift also über den Ordner hinaus.

  10. Wissenscheck

    Bevor Sie den Handler anfassen, machen Sie sich klar, warum der schnelle Patch nicht die Lösung ist.

Abdeckung der Sicherheits-Frameworks

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