Fetch the Flag CTF 2022: Lösung zu File Explorer
9. November 2022
0 Min. LesezeitDanke, dass Sie mit uns Fetch gespielt haben! Glückwunsch an die Tausenden von Spielerinnen und Spielern, die bei Fetch the Flag CTF dabei waren. Und ein großes Dankeschön an die Snyker, die die Challenges entwickelt, getestet und dokumentiert haben!
Wenn Sie bei Snyks Fetch the Flag 2022 dabei waren und nach der Lösung der Challenge File Explorer suchen, sind Sie hier genau richtig. Gehen wir die Lösung gemeinsam durch!
Beginnen wir mit der Reconnaissance-Phase
In dieser Phase der Challenge identifiziert ein Angreifer ein verwundbares Ziel und untersucht, wie es sich ausnutzen lässt. In unserem Fall erhalten wir einen Link zu einer Website und einen Link zu einem öffentlichen GitHub-Repository. Für den Einstieg genügt uns ein einziger Angriffspunkt.

Was haben wir vor uns?
Zunächst prüfen wir den Link und rufen http://file-explorer.c.ctf-snyk.io/ auf. Dort sehen wir einige Zeilen Text und die Aufforderung, die Dateien über einen Link anzusehen.

Wir klicken auf den Link und gelangen zum Ordner /public/, in dem wir auf einige Anwendungsdateien zugreifen können.

Aufgrund des Namens und der Beschreibung der Challenge sowie des Links /public/ können wir vermuten, dass wir einen Directory-Traversal-Angriff durchführen müssen.
Was ist ein Directory-Traversal-Angriff?
Ein Directory-Traversal-Angriff (auch Path-Traversal-Angriff genannt) zielt darauf ab, auf Dateien und Verzeichnisse außerhalb des vorgesehenen Ordners zuzugreifen. Durch die Manipulation von Dateipfaden mit Punkt-Punkt-Schrägstrich-Sequenzen (../) und deren Varianten oder durch die Verwendung absoluter Dateipfade kann es möglich sein, auf beliebige Dateien und Verzeichnisse im Dateisystem zuzugreifen. Dazu können der Quellcode der Anwendung, Konfigurationsdateien und andere wichtige Systemdateien gehören.
Schwachstellen durch Directory Traversal können zur Offenlegung von Informationen führen. Dadurch kann ein Angreifer Informationen über die Ordnerstruktur erhalten oder den Inhalt vertraulicher Dateien auf dem System lesen.
Die Flagge mit Postman finden
Bei CTFs geht es darum, alle verfügbaren Tools einzusetzen. Verwenden wir also Postman, um den Path-Traversal-Angriff auszuführen. Wir beginnen mit einer einfachen GET-Anfrage (http://file-explorer.c.ctf-snyk.io), um auf die Website zuzugreifen. Das Ergebnis ist dasselbe wie im Browser:

Dasselbe Ergebnis erhalten wir, wenn wir mit dieser GET-Anfrage /public ans Ende der URL anhängen (http://file-explorer.c.ctf-snyk.io/public/):

Der Punkt-Punkt-Schrägstrich (../) leitet zur Startseite der Website weiter. Versuchen wir es mit einer Variante der Sequenz, bei der wir URL-Encoding verwenden.

Was ist URL-Encoding?
Beim URL-Encoding werden unsichere ASCII-Zeichen durch ein "%" gefolgt von zwei hexadezimalen Ziffern ersetzt. In unserem Fall verwenden wir %2e für . und %2f für /.
Sehen wir uns an, was diese GET-Anfrage ergibt (http://file-explorer.c.ctf-snyk.io/public/%2e

Wir sehen eine Flag-Datei. Rufen wir sie mit dieser GET-Anfrage auf (http://file-explorer.c.ctf-snyk.io/public/%2e%2e%2f/flag):

Wir haben die Flagge gefunden!
Die Flagge mit Curl finden

Versuchen wir es noch einmal, diesmal nur mit curl. Wir gehen genauso vor und rufen zunächst mit diesem Befehl die Ordner der Website ab:
curl http://file-explorer.c.ctf-snyk.io/public/
Anschließend nutzen wir die Path-Traversal-Schwachstelle und rufen mit diesem Befehl den Ordner oberhalb des Ordners public ab:
curl http://file-explorer.c.ctf-snyk.io/public/%2e%2e%2f/
Zum Schluss rufen wir die Flagge mit dem folgenden Befehl ab:
curl http://file-explorer.c.ctf-snyk.io/public/%2e%2e%2f/flag
Die Flagge im Browser finden
Dasselbe können wir direkt im Browser tun. Geben Sie die folgende URL in einen Browser ein, um die Seite aufzurufen, über die Sie auf die Flagge zugreifen können:
http://file-explorer.c.ctf-snyk.io/public/%2e%2e%2f/

Die Flagge mit der Snyk IDE-Erweiterung finden
Dazu klonen Sie das öffentliche Repository und öffnen es in Visual Studio Code. Installieren Sie über den Marketplace die Snyk Security IDE extension, indem Sie nach „Snyk“ suchen. Starten Sie nach der Installation Ihre IDE neu und führen Sie npm install aus.

Wenn Sie zum ersten Mal auf das kleine Patch-Symbol (unser Maskottchen) in der linken Seitenleiste klicken, sehen Sie die Open-Source-Schwachstellen in einem Projekt erst nach der Authentifizierung. Dafür können Sie ein kostenloses Snyk-Konto verwenden. Nach der Authentifizierung können Sie Ihren ersten Scan starten!
Sie können sich auch die Datei package.json ansehen. Dort entdecken Sie einige Schwachstellen im Paket st.

st ist ein Modul zum Bereitstellen statischer Dateien auf Webseiten und enthält eine Schwachstelle dieser Art. In unserem Beispiel sehen wir in der Datei app.js, dass Dateien über die Route public bereitgestellt werden.

Kehren wir zur Datei package.json zurück. Bewegen Sie den Mauszeiger über das Paket st und klicken Sie auf die gelbe Glühbirne, um die schwerwiegendste Schwachstelle anzuzeigen.

Sie werden zur Directory-Traversal-Schwachstelle weitergeleitet. Auf dieser Seite erfahren Sie mehr über die Schwachstelle, welche Version sie eingeführt hat, wie Sie sie beheben können und finden einen Proof of Concept.

Weitere Informationen zu dieser Schwachstelle erhalten Sie, wenn Sie auf Mehr über diese Schwachstelle erfahren klicken.

File Explorer: Zusammenfassung
Überlegen wir einmal, wie viele Codezeilen wir selbst schreiben und wie viele Komponenten oder Pakete wir in unsere Codebasis importieren. Wir wollen das Rad nicht neu erfinden und Zeit damit verschwenden, etwas neu zu schreiben, das wahrscheinlich bereits als Paket in unserem Ökosystem verfügbar ist.
Genau das war bei dieser Challenge der Fall. Wir haben eine einfache Website, auf der wir das Paket st zum Bereitstellen statischer Dateien verwenden. Da wir jedoch eine veraltete Paketversion eingesetzt haben, ist eine Schwachstelle in unser Projekt gelangt. Dadurch kann ein potenzieller Angreifer vertrauliche Dateien, Zugangsdaten oder Passwörter aufspüren. Halten Sie die Komponenten Ihrer Projekte auf dem neuesten Stand, um Ihre Angriffsfläche zu verringern!
Ich hoffe, Ihnen haben File Explorer und die anderen Challenges im CTF gefallen :)
Möchten Sie erfahren, wie wir alle anderen Flaggen gefunden haben? Auf unserer Seite Fetch the Flag-Lösungen erfahren Sie, wie wir dabei vorgegangen sind.



