Ga naar hoofdinhoud

Weak Session IDs — Low

Wanneer je inlogt op een website, krijg je van de webserver een uniek bewijsje (een "Sessie ID") opgeslagen in een Cookie. Zolang je dit bewijsje meestuurt bij elke klik, weet de server wie je bent. Maar wat als de server dat bewijsje op een luie, voorspelbare manier maakt?

1. Predict (Voorspel)

De server gebruikt de volgende code om bij elke login een nieuw sessie-ID te genereren en in een cookie te stoppen:

if (!isset ($_SESSION['last_session_id'])) {
$_SESSION['last_session_id'] = 0;
}
$_SESSION['last_session_id']++; // Verhoog de teller met 1

$cookie_value = $_SESSION['last_session_id'];
setcookie("dvwaSession", $cookie_value);

Vraag: Waarom is het een verschrikkelijk slecht idee om een sessie-id domweg een oplopend getal (1, 2, 3...) te maken?

Antwoord

Als jouw cookie-waarde vandaag dvwaSession=12 is, betekent dit hoogstwaarschijnlijk dat de vorige persoon die vandaag heeft ingelogd sessie 11 kreeg, en degene na jou krijgt sessie 13. Een hacker kan simpelweg de waarde in zijn eigen cookie aanpassen naar 11, op F5 (vernieuwen) drukken, en de server zal hem onmiddellijk aanzien voor de andere persoon die op dat moment was ingelogd!

2. Run & Investigate

Start het lab.

Laden...

⚠️ Labbeperking: Het aanpassen van cookies via de F12 Developer Tools werkt in het lab beperkt, omdat het lab in een beveiligd iframe draait. Je kunt de gegenereerde sessie-ID's wél observeren, maar voor het daadwerkelijk kapen van een sessie heb je een lokale DVWA-installatie nodig.

Klik in het lab een paar keer op de knop om een nieuwe sessie op te vragen. Let op de waarde die wordt getoond.

3. Modify & Make (Aanpassen & Maken)

Omdat het sessie-ID (de cookie) een simpele waarde als 1, 2, of 3 is, gaan we deze cookie stelen en aanpassen.

Tip

Druk op F12 (Developer Tools) en zoek de sectie op waar je cookies kunt inzien en wijzigen. Dit staat vaak onder "Application" of "Storage".

Antwoord
  1. Ga in Developer Tools naar Application -> Cookies.
  2. Zoek de cookie met de naam dvwaSession.
  3. Verander de waarde van 3 in 1 of 2.
  4. Vernieuw de pagina. Gefeliciteerd, je hebt nu de sessie "gekaapt" (Session Hijacking) van de gebruiker met dat ID!

4. ✓ Wat moest je zien?

Controle
  • Klik je een paar keer op de "Generate" knop, dan zie je de cookie-waarde dvwaSession netjes oplopen: 1, 2, 3, …
  • Dat oplopende patroon bewijst direct de zwakte: je weet welke ID's andere gebruikers (in theorie) hebben.
  • In F12 Application -> Cookies kun je de waarde zien staan; in een lokale install kun je hem ook ter plekke wijzigen om een sessie te kapen.

Zie je geen oplopende getallen maar een lange string? Dan zit het level mogelijk op Medium of hoger. Controleer het level-bordje rechtsboven.

5. Er gaat iets mis...

Je past je cookie aan naar ID 999 en ververst de pagina. Ineens logt het systeem je uit. Waarom? Omdat gebruiker 999 waarschijnlijk nog niet is ingelogd op deze testserver (of omdat de sessie al is verlopen). De server ziet het bewijsje 999, zoekt het op in zijn lijst, ziet geen overeenkomst, en vernietigt de sessie. Een Session Hijacking aanval werkt alleen op actieve, geldige sessies die momenteel op de webserver geregistreerd staan!