Um die Seite lokal als Docker\footnote{\href{https://www.docker.com/}{https://www.docker.com/}} Container zu betreiben wurde folgende ``docker-compose.yml'' genutzt. Zum Starten muss nun lediglich ein ``docker-compose up'' ausgeführt werden.
Auf der Startseite (Abbildung \ref{fig:Startseite Juice Shop}) wird man mit verschiedenen Pop-Ups begrüßt. Es beschreibt, dass die Seite nicht sicher sei und die Applikation von der Open Web Application Security Project Foundation\footnote{\href{https://owasp.org/}{https://owasp.org/}} bereitgestellt wird. Wenn man das Tutorial startet, wird durch verschiedene Tipps hingewiesen, wie die Sicherheitslücken gefunden werden können.
So wird zum Beispiel erklärt, dass man mit F12 den Javascript-Code der Seite analysieren könnte (Abbildung \ref{fig:Javascript in den Entwicklertools von Firefox}). Der Vorschlag ist gut, da mit einer Suche der Pfad des Score-Boards entdeckt werden kann (Abbildung \ref{fig:Pfad des Score-Boards}).
Wenn man nun noch nach Admin sucht, kann man eine Route in das Administrations-Panel finden. Leider sind wir aber nicht Berechtigt die Seite zu sehen (Abbildung \ref{fig:403 Administration}). Beim Ausprobieren wie man die Daten des Admins bekommen kann, hat ein Fehler den Server zum Absturz gebracht (Abbildung \ref{fig:Server Absturz}). Mit einer SQL Injection (Eingabe des Zeichen ') über den Login kann ein SQLITE Error hervorgerufen werden (Abbildung \ref{fig:SQLITE error}).
Man kann den SQL Befehl so anpassen, damit durch ``OR TRUE --'' immer true zurück kommt und eine Authentifizierung mit dem ersten Nutzer in der Datenbank möglich ist. Glücklicherweise ist das der admin (Abbildung \ref{fig:Login Admin}).
Nun können wir das Admin-Panel, welches vorher nicht für uns zur Verfügung stand, nutzen. Unter ``http:\//\//localhost:3000\//\#\//administration'' sehen wir nun das Feedback der Nutzer (Abbildung \ref{fig:Admin-Panel}).
Im Score-Board gibt es ein Tutorial zum Erstellen von Feedbacks unter einem anderen Account. Dazu gibt man zuerst ein normales Feedback ab. der Request sieht wie folgt aus (Abbildung \ref{fig:Feedback Request}):
Damit kann man in z.B. Postman ein Post Request unter einem anderen Namen mit dem neu vorgeschlagenen Captcha (Abbildung \ref{fig:Captcha Lösung}) abschicken (Abbildung \ref{fig:Neues Feedback mit falschem Namen}).
Da in der App auch Cross-Site-Scripting eingebaut ist, dürfte es im Juice Shop dafür auch eine Möglichkeit geben. Im Score Board wird man darauf hingewiesen, dass man sich das Suchfeld anschauen sollte (Abbildung \ref{fig:Cross-Site-Scripting} / \ref{fig:Cross-Site-Scripting Bonus}). Die vorgefertigten iFrames wurden vom Score-Board kopiert.
Um sich mit Jims oder Benders Account anzumelden muss lediglich eine SQL Injection beim Login durchgeführt werden. Sowohl Jims als auch Benders E-Mail können in den Kommentaren zu Produkten gefunden werden.
Um ein Kommentar für ein Produkt zu ändern, schicken wir zuerst ein Kommentar ab und ändern ihn, um die API herauszufinden (Abbildung \ref{fig:Kommentar Änderung Request}). Danach schauen wir mit einem GET Request welche ID wir ändern möchten (Abbildung \ref{fig:Postman Kommentar IDs}) und schicken einen PATCH Request (Abbildung \ref{fig:Postman Kommentar Änderung}) mit einem Bearer Token des Admins als Authentifizierung (Abbildung \ref{fig:Bearer Token von Admin}).