Ga naar hoofdinhoud

Brute Force — Impossible

Hoe beveilig je een inlogpagina definitief tegen wachtwoord-raad aanvallen?

1. Predict (Voorspel)

De server gebruikt nu een combinatie van meerdere beveiligingslagen:

// Na 3 mislukte pogingen: account vergrendeld voor 15 minuten
if ($failed_login_count >= 3) {
$last_attempt = strtotime($last_login);
$timeout = $last_attempt + (15 * 60); // 15 minuten lockout
if (time() < $timeout) {
echo "Account is tijdelijk vergrendeld. Probeer later opnieuw.";
exit;
}
}

Vraag: Waarom maakt een combinatie van Account Lockout + CSRF token + sleep() vertraging Hydra en alle andere brute-force tools compleet nutteloos?

Antwoord
  • Account Lockout: Na 3 mislukte pogingen is het account 15 minuten geblokkeerd. Hydra kan nu maximaal 3 wachtwoorden per 15 minuten proberen, wat bij een woordenlijst van 10.000 wachtwoorden ruim 34 dagen duurt!
  • CSRF Token: Elk formulierverzoek vereist een uniek token. Hydra kan niet zomaar duizenden requests tegelijk sturen, maar moet eerst elke keer het token ophalen.
  • Sleep vertraging: Zelfs een correcte login wordt kunstmatig 2 seconden vertraagd, zodat timing-aanvallen (meten of een wachtwoord "bijna" goed was) onmogelijk worden.

2. Run & Investigate

Start het lab.

Laden...

Probeer 4 keer met een fout wachtwoord in te loggen. Na de derde poging zul je een vergrendelingsmelding zien.

3. ✓ Wat moest je zien?

Controle
  • Bij poging 1, 2 en 3 zie je gewoon de bekende "Username and/or password incorrect" melding.
  • Vanaf poging 4 verschijnt de melding "Account is tijdelijk vergrendeld" (of vergelijkbaar). Het account blijft 15 minuten op slot, óók als je daarna het juiste wachtwoord typt.
  • Hydra zou hier kansloos op stuk lopen: na 3 hits volgen alleen nog lockout-meldingen, geen incorrect.

Zie je géén lockout na 3 pogingen? Controleer dat je het level-bordje rechtsboven daadwerkelijk op Impossible staat — soms blijft DVWA op een ander niveau hangen.

Wat heb je geleerd?

  • Rate Limiting is essentieel: Zonder vertraging kan een hacker miljoenen wachtwoorden per uur proberen. Met een lockout van 15 minuten na 3 pogingen wordt dit onhaalbaar.
  • Defense in Depth: Eén maatregel is nooit genoeg. De combinatie van lockout + tokens + vertraging maakt brute-force aanvallen praktisch onmogelijk.
  • Hydra is een wapen, geen wondermiddel: Hydra werkt alleen als de server geen enkele bescherming heeft. Professionele websites maken brute-force zinloos.