diff --git a/gruyere-writing-file.md b/gruyere-writing-file.md new file mode 100644 index 0000000..f85c70e --- /dev/null +++ b/gruyere-writing-file.md @@ -0,0 +1,18 @@ +# Datei auf Server verändern + +## Ziel + +Ziel ist es, die Datei `secret.txt` aus der Übung zu [Directory-Traversal](gruyere-directory.md) mit einem beliebigen Inhalt zu überschreiben. Um diesen Angriff durchzuführen, wird ein weiterer Directory-Traversal-Angriff durchgeführt. + +## Voraussetzungen + + * Webbrowser (z.B. Chrome oder Firefox) + * Text-Editor + * Gruyere ist verfügbar (siehe [Anleitung](vorbereitung.md)) + +## Übung + + 1. Erzeugen Sie eine Textdatei mit dem Namen `secret.txt` und einem beliebigen Inhalt. Speichern Sie diese Datei auf Ihrem Rechner. + 2. Schauen Sie sich die Upload-Funktionalität von Gruyere genauer an. Betrachten Sie insbesondere, wie der Pfad für die Datei konstruiert wird, die man hochladen möchte. + 3. Verwenden Sie dieses Wissen, um Ihre Version der Datei `secret.txt` hochzuladen und die auf dem Server vorhandene Version zu ersetzen. + 4. Verwenden Sie den bereits durchgeführten [Directory-Traversal-Angriff](gruyere-directory.md), um zu überprüfen, ob Sie erfolgreich waren. diff --git a/gruyere-xsrf.md b/gruyere-xsrf.md new file mode 100644 index 0000000..a3e2067 --- /dev/null +++ b/gruyere-xsrf.md @@ -0,0 +1,20 @@ +# Cross Site Request Forgery (XSRF) + +## Ziel + +Ziel ist es, eine URL zu erzeugen, die Sie an einen anderen Benutzer von Gruyere schicken können. Wenn das Opfer auf den Link klickt, wird eines _seiner_ Snipptes gelöscht. + +## Voraussetzungen + + * Webbrowser (z.B. Chrome oder Firefox) + * Gruyere ist verfügbar (siehe [Anleitung](vorbereitung.md)) + +## Übung + +Bitte beachten Sie, dass jeder Verwender eine Gruyere-Instanz im Internet eine eigene Instanz-ID bekommt, die Teil der URL wird, z.B. `http://google-gruyere.appspot.com/[ID]/`. Es geht bei diesem Angriff _nicht_ darum, eine andere Instanz anzugreifen (andere ID), sondern einen anderen Benutzer derselben Instanz. + + 1. Legen Sie zwei Benutzer in Gruyere an: `bob` für einen gutartigen Benutzer (Opfer) und `malroy` für den Angreifer. + 2. Melden Sie sich als `malroy` an und schauen Sie sich die Funktionalität zum Anlegen und Löschen von Snippets an. Möglicherweise wollen Sie auch einen Blick auf den HTML-Quelltext der Seite werfen. + 3. Entwickeln Sie eine URL, die Sie an einen beliebigen anderen Benutzer von Gruyere schicken können und die beim Ausführen eines seiner Snippets löscht. + 4. Melden Sie sich als `bob` an und legen Sie einige Snippets an. + 5. Führen Sie den bösartigen Link aus und überprüfen Sie, ob wirklich ein Snippet verschwunden ist. diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..561ab5b --- /dev/null +++ b/readme.md @@ -0,0 +1,19 @@ +# Offensive Security + +> Arguing that you don’t care about the right to privacy because you have nothing to hide is no different than saying you don’t care about free speech because you have nothing to say. -- Edward Snowden + +"Genug der Theorie -- jetzt wird gehackt", ist Ihr Matra für diese Woche. Jetzt wollen Sie endlich die Dinge anwenden, mit denen Sie sich letzte Woche theoretisch befasst haben. + +## Hacken der Gruyere-Anwendung + +Für die Übungen zur Offensive-Security wird die Anwendung [Google-Gruyere](https://google-gruyere.appspot.com/start) eingesetzt. + +Die Aufgaben werden wir gemeinsam in der Vorlesungsstunde durchführen. Sie müssen dafür also nichts zwingend vorbereiten. Allerdings sollten Sie die beschriebene Angriffe prinzipiell aus der vorhergehenden Woche kennen. + + * [Vorbereitung](vorbereitung.md) + * [Cookie-Manipulation](gruyere-cookies.md) + * [Directory-Traversal](gruyere-directory.md) + * [Datei auf Server schreiben](gruyere-writing-file.md) + * [Reflected XSS](gruyere-reflected-xss.md) + * [Persistent XSS](gruyere-persistent-xss.md) + * [Cross Site Request Forgery (XSRF)](gruyere-xsrf.md) diff --git a/vorbereitung.md b/vorbereitung.md new file mode 100644 index 0000000..2d832bc --- /dev/null +++ b/vorbereitung.md @@ -0,0 +1,14 @@ +# Vorbereitungen: Gruyere im Internet benutzen + +Google Gruyere ist eine Webanwendung, die es Benutzern ermöglicht, Textschnipsel zu veröffentlichen und verschiedene Dateien zu speichern. Gruyere weist mehrere Sicherheitslücken auf, von Cross-Site Scripting und Cross-Site Request Forgery bis hin zu Informationslecks, Denial-of-Service und Remote-Code-Ausführung. Das Ziel von Gruyere ist es, die Entdeckung von Bugs zu üben. + +Google erlaubt explizit, diese Web-Anwendung für Übungen im Bereich der Sicherheitsausbildung zu benutzen. Beachten Sie aber bitte, dass Google keine Angriffe, die nicht durch die beschriebenen Übungen abgedeckt sind, erlaubt. + +## Zugriff auf die Web-Anwendung + + 1. Gehen Sie auf die Web-Anwendung [http://google-gruyere.appspot.com/start](http://google-gruyere.appspot.com/start) + 2. Klicken Sie auf _Agree & Start_ + 3. Klicken Sie auf _Sign up_ + 4. Wenn alles erfolgreich war, sollten Sie folgendes im Browser sehen + 5. Legen Sie sich einen Account in der Gruyere-Web-Anwendung an. Benutzen Sie auf __keinen Fall__ einen echten Benutzernamen oder ein echtes Passwort. Die Anwendung ist absichtlich unsicher und sollte nicht Ihre echten Daten bekommen. + 6. Beim Start der Anwendung wird eine ID angezeigt, die Sie sich merken sollten, da Sie diese für die weiteren Aufgaben benötigen. Sie können die ID aber auch jederzeit oben in der URL der Seite sehen.