
OWASP Juice Shop
In diesem Artikel möchte ich einmal kurz den OWASP Juice Shop vorstellen - eine tolle Möglichkeit, um über gängige Sicherheitslücken in Applikationen aufzuklären - sowohl für unerfahrene als auch für erfahrene Entwickler*innen. Dieser ist auch auf Github zu finden.
Was ist der OWASP Juice Shop?
Der Juice Shop, auf Deutsch 'Saftladen', ist eine Beispielapplikation, die alle erdenklichen Sicherheitslücken absichtlich implementiert hat. Dazu kommt noch ein Scoreboard (das man erst einmal durch das Ausnutzen einer Sicherheitslücke finden muss), welches uns ein paar Tipps gibt, welche Lücken man ausnutzen kann. Das macht den Juice Shop zu dem Idealen Schulungs-Werkzeug, um für Sicherheitslücken zu sensibilisieren und das gleich, indem aufgezeigt wird, wie diese ausgenutzt werden können. So entsteht sofort das Verständnis dafür, warum eine Sicherheitslücke zu vermeiden ist.
Das klingt gut! Wie kann ich damit anfangen?
Eine einfache Möglichkeit, mit dem Juice Shop zu arbeiten, ist es, sich diesen lokal aufzusetzen. Dieser kann beispielsweise in einem Docker-Container gestartet werden, dafür gibt es ein offizielles Image. Nachdem Docker installiert wurde, kann beispielsweise für einen schnellen Test
run --rm -p 3334:3000 bkimminich/juice-shop
ausgeführt werden.
Oder wenn wir möchten, dass der Container erhalten bleibt:
docker run -d --restart=always -p 3334:3000 --name juiceshop bkimminich/juice-shop
Und wie mache ich weiter?
Die erste Challenge
Als Erstes sollten wir das Scoreboard finden. Leider wurde dieses aber vermeintlich sicher versteckt. Jedenfalls finden wir nirgendwo einen Hinweis auf das Scoreboard, auch nicht im Navigations-Menü:
Dann sehen wir uns doch mal die Sources von der Seite an. Ganz offensichtlich handelt es sich hier ja um eine Single-Page-Application. Wir suchen mal nach 'score' und siehe da:
Für das Scoreboard müssen wir also '/score-board' besuchen:
Was lernen wir daraus?
- Gerade bei einer Single-Page-Applikation können gerne mal Daten in den Sources versteckt sein, die eigentlich geheim sind. Es sollte darauf geachtet werden, diese Informationen zu verbergen
- Nur weil eine Seite nicht direkt verlinkt ist, heißt das nicht, dass man sie nicht erraten kann. Es sollte immer eine zusätzliche Absicherung geben
Nächster Versuch
Wir hoffen mal, dass die Seite auch für SQL-Injection anfällig ist. Vielleicht können wir uns ja als Administrator einloggen. Dafür gehen wir mal auf die Login-Seite und geben einfach nur `'` in das Benutzername-Feld ein sowie ein beliebiges Passwort:
Und siehe da, wir bekommen nicht nur einen unbehandelten Fehler, sondern sehen zu allem Überfluss sogar noch die SQL-Query, die ausgeführt wurde unter unseren Requests in den Dev-Tools des Browsers! Dann ändern wir mal unseren Benutzernamen zu
' OR email LIKE '%admin%';--
und sehen, was passiert. Das Passwort-Feld bekommt beliebige Zeichen - wir brauchen ja kein Passwort, das Feld muss nur ausgefüllt sein. Siehe da, wir sind eingeloggt:
Was lernen wir daraus?
- SQL-Injection sollte um jeden Preis vermieden werden
- SQL-Queries sollten nicht an das Frontend übertragen werden
Was kommt als Nächstes?
Es gibt noch sehr viele spannende Challenges, die uns typische Sicherheitslücken näherbringen sollen. Mit der Zeit werden sie immer schwieriger und man kann durchaus Stunden daran sitzen (oder sich die Lösungen aus dem Internet heraussuchen, aber wo wäre da der Spaß?). Wenn man ein gutes Bild davon hat, wie Sicherheitslücken ausgenutzt werden, kann man auch ein besseres Verständnis gewinnen, wie und warum diese zu vermeiden sind. Und genau dafür ist der Juice Shop eine super Möglichkeit und ich kann jedem empfehlen, diesen einmal auszuprobieren! Dazu kann ich auch die Burp Suite für einige Challenges sehr empfehlen. Diese wird auch von echten Hackern eingesetzt, um unsere Applikationen zu hacken.
Ich hoffe, dass ich damit zumindest für ein kleines bisschen mehr Sicherheit in der Welt der Softwareentwicklung sorgen konnte. Und in dem Zusammenhang auch ein großes Lob an alle, die an dem Juice Shop mitgewirkt haben!





Kommentare
Keine Kommentare