Cross site scripting technieken
Uitleg en voorbeeld
Cross-site scripting (XSS) is een techniek die gebruik maakt van een veelvoorkomend beveiligingslek: kwetsbaarheid voor code-injection.
Een aanvaller probeert code te 'injecteren' tijdens een gebruikerssessie met een website teneinde gevoelige informatie van de
betreffende gebruiker te bemachtigen.
Er zijn meerdere vormen van cross site scripting. Onderstaand is een voorbeeld, waarbij gebruiker X aanlogt op een voor
cross site scripting kwetsbare site Y en moet inloggen met username en wachtwoord. De site bevat verder identiteitsgevoelige gegevens
van de gebruiker X.
De aanvaller stuurt een email met een URL naar site Y. Het emailtje lijkt afkomstig van site X (spoofing). In deze URL plaatst de aanvaller echter een stukje script, bijvoorbeeld:
www.Y.nl/default.asp?naam= script codeXYZ() /script. Bij de script tags zijn bewust de "<" en ">" weggelaten, omdat uw browser datgeven wat tussen de
script tags staat anders niet zou weergeven.
Op deze manier wordt op site X in het naamveld een stukje script (codeXYZ() ) geïnjecteerd. Deze script bevat bijvoorbeeld een doorlink naar
de site van de aanvaller. Gebruiker X is nietsvermoedend omdat de site van de aanvaller dezelfde loginpagina heeft als de vertrouwde
site Y. Op deze manier heeft de aanvaller het userid en wachtwoord van gebruiker X.

In bovenstaand plaatje is het genoemde XSS voorbeeld grafisch weergegeven:
1) Aanvaller stuurt email met URL, met in naamveld een script
2) Gebruiker X klikt op link en gaat naar site Y
3) Site Y is gevoelig voor XSS aanvallen. De input wordt niet gecontroleerd, en de script wordt uitgevoerd, de gebruiker X
wordt doorgelinkt naar de aanvaller.
4) De aanvaller heeft een interactieve sessie met gebruiker X en verkrijgt zo UID en wachtwoord.
Er zijn vele varianten op bovenstaande. Het hoeft niet zo te zijn dat er wordt doorgelinkt naar de aanvaller. Ook kan het zijn dat het stukje
script wat de aanvaller per email heeft verzonden door site Y weer wordt terugezonden naar gebruiker X. Vanaf dat moment kan het stukje script
bijvoorbeeld cookies van de sessie tussen gebruiker X en site Y opvragen en naar de site van de Aanvaller sturen.
Remedie
WEBapplicaties zouden natuurlijk ingevoerde code van de "gebruiker" moeten valideren en zeker geen
scripts in een invoerveld accepteren. Helaas zijn er nog steeds webapplicaties die geen of weinig controle uitvoeren.
Verder dient een gebruiker niet zomaar op links in een email te klikken, ook al lijkt het emailjte van de vertrouwde site afkomstig.
Surf rechtstreeks naar een site waarop moet worden ingelogd.





