Authorization Bypass — High
Op het High niveau gebruikt de programmeur JavaScript om controles uit te voeren vóórdat het formulier verstuurd wordt.
1. Predict (Voorspel)
De ontwikkelaar heeft een stukje JavaScript toegevoegd aan het formulier:
form.onsubmit = function() {
if (geselecteerde_id != mijn_eigen_id) {
alert("Je mag dit account niet bekijken!");
return false; // Stop het verzenden
}
}
Vraag: Waar draait deze controle-code en waarom is dit zinloos tegen een gerichte aanval?
Antwoord
JavaScript draait in de browser van de gebruiker, op hun eigen apparaat (Client-Side). Als hacker kun je in de Developer Tools simpelweg JavaScript uitzetten, of het script verwijderen, of de gegevens via een ander programma direct naar de server sturen waardoor de JavaScript validatie compleet gepasseerd wordt!
2. Run & Investigate
Start het lab en open direct je Developer Tools.
Probeer de waarde van de dropdown in de HTML aan te passen en te verzenden zoals je op het Medium level deed. Wat gebeurt er? Je krijgt waarschijnlijk een foutmelding op je scherm (JavaScript grijpt in).
3. Modify & Make (Aanpassen & Maken)
Jouw doel is om het verzoek tóch naar de server te forceren en het profiel van iemand anders op te halen.
Tip
Als JavaScript de belemmering is... wat kun je in een browser dan doen met JavaScript?
Antwoord
Je kunt via de instellingen van je browser JavaScript tijdelijk uitschakelen (of een extensie zoals NoScript gebruiken). Als je daarna het formulierveld met F12 aanpast naar value="1" en op Submit klikt, wordt het formulier verstuurd zonder dat de JavaScript-controle wordt geactiveerd! De server levert de data weer braaf af.
4. ✓ Wat moest je zien?
- Mét JavaScript aan: een alert/popup "Je mag dit account niet bekijken!" bij elke poging — de aanval wordt geblokkeerd.
- Mét JavaScript uit (én
value="1"aangepast): geen popup meer, en het profiel van een andere gebruiker verschijnt. - De server zelf zegt nooit nee: alle controle gebeurt in jouw browser, dus uitschakelen is genoeg.
Krijg je na het uitzetten van JavaScript nog altijd de popup? Vergeet niet de pagina te herladen (F5) nadat je JavaScript hebt uitgezet — anders draait het oude script nog door.