Skip to content
BoKSA

Docentenhandleiding — Juice Shop IDOR-oefening (workshop AAA, oefening 2)

Docentenhandleiding — Juice Shop IDOR-oefening (workshop AAA, oefening 2)

Voor jou als docent, niet voor studenten. Dit is de klassikale demo + meedoen-oefening waarin studenten via een gewijzigde basket-ID het winkelmandje van een andere gebruiker bekijken in OWASP Juice Shop. Het laat het IDOR-principe (Insecure Direct Object Reference) zien zónder hacktools — puur in de browser. Tijd: ± 20 min inclusief nabespreking.

Wat je vooraf regelt

  • De omgeving. OWASP Juice Shop, projectpagina: https://owasp.org/www-project-juice-shop/. Er is een publieke demo op https://demo.owasp-juice.shop waar je direct kunt beginnen. Wil je zeker zijn van een schone, snelle omgeving zonder dat de hele klas op één demo-server zit, draai hem dan lokaal met Docker: docker run --rm -p 3000:3000 bkimminich/juice-shop en open http://localhost:3000. Test dit één keer thuis; de demo-server kan traag zijn bij veel gelijktijdige gebruikers.
  • Je scherm. Jij doet het voor via je gedeelde scherm; studenten doen mee op hun eigen laptop. Zo hangt de oefening niet op ieders setup.
  • Zelf één keer doorlopen vlak voor de les. Juice Shop is "self-healing": bij elke serverstart worden de data schoongeveegd en opnieuw gevuld, dus ID-nummers kunnen per sessie licht verschillen. Daarom werk je met "±1" en niet met een vast nummer.

De stappen (dit staat ook op de slide)

  1. Registreer en log in met een willekeurig account (Account → Login → Not yet a customer?).
  2. Doe één product in je mandje.
  3. Open de developer tools met F12 → tabblad Application (in Firefox: Storage) → Session Storage → klik de Juice Shop-herkomst aan.
  4. Zoek de sleutel bid met een numerieke waarde. Dat is jouw basket-ID.
  5. Wijzig die waarde: tel er 1 bij op of haal er 1 af (bijv. 65). Enter.
  6. Ga naar de Basket-pagina en druk op F5 om te herladen (soms nodig om de wijziging door te geven aan de Angular-app).
  7. Je ziet nu het mandje van een andere gebruiker — met andere producten dan die van jou. Juice Shop meldt de challenge "View Basket" als opgelost.

De didactische kern (hier gaat het echt om)

De truc zelf is niet het punt. De vraag die je hardop stelt is: "Je was gewoon ingelogd. Waarom werkte dit dan toch?"

Het antwoord: de server controleerde wél dat je was ingelogd, maar niet of dat mandje van jou was. Dat is precies een IDOR / broken access control. De fix is saai maar simpel: de server moet bij elk verzoek controleren dat het opgevraagde object bij de ingelogde gebruiker hoort — autorisatie serverkant, op elk verzoek.

Brug naar hun eigen project (belangrijkste stap)

Laat studenten na de demo kort naar hun eigen projectapp kijken: laden jullie ergens data op basis van een ID (in de URL, in een API-verzoek, in session storage), en controleert de server of dat ID bij de ingelogde gebruiker hoort? Dit is waar de oefening van "leuk trucje" naar projectwerk verschuift.

Valkuilen / FAQ

  • De challenge lost niet op. Meestal vergeten te herladen (stap 6, F5) of bid naar een leeg mandje gewijzigd — probeer +1 én −1.
  • Ik zie geen bid in Session Storage. Eerst een product in het mandje doen (stap 2); vóór die tijd bestaat er soms nog geen basket.
  • Een student wil verder hacken. Prima nieuwsgierigheid, maar bewaak de tijd en het niveau: dit is N2 en gaat over het begrijpen van broken access control, niet over pentesten. Verwijs enthousiaste studenten naar de Juice Shop Score Board voor eigen tijd.
  • Ethiek, kort benoemen. Dit doe je in een expres-kwetsbare oefenomgeving. Ditzelfde doen op een echt systeem dat niet van jou is, is strafbaar. Goede aanleiding om het even over verantwoord handelen te hebben.

Bron

Werkwijze geverifieerd tegen de officiële OWASP Juice Shop companion guide (pwning.owasp-juice.shop) op 6 juli 2026: de browser-only methode via Session Storage bid is daar de gedocumenteerde oplossing voor de challenge "View Basket" (Broken Access Control, 2 sterren).