Cross-Site Scripting (XSS) is een injectieaanval waarbij kwaadaardige scripts worden geïnjecteerd in anderszins betrouwbare en goedaardige websites. Wanneer een aanvaller via een webapplicatie kwaadaardige code, meestal als browserscript, naar een andere eindgebruiker verzendt, wordt dit een XSS-aanval genoemd. Webapplicaties die gebruikersinvoer niet valideren of versleutelen, zijn kwetsbaar voor deze aanvallen omdat er wijdverbreide fouten voorkomen.
Via XSS kan een kwaadaardig script naar een nietsvermoedende gebruiker worden gestuurd om toegang te krijgen tot zijn gegevens. In het geval van een hand die niet vertrouwd mag worden, kan de browser van de eindgebruiker dat echter niet zien en zal hij het script toch uitvoeren. In wezen heeft het kwaadaardige script toegang tot cookies, sessietokens of andere gevoelige informatie die de browser kan verkrijgen omdat hij denkt dat de hand afkomstig is van een vertrouwde bron.
Hebben gebruikers niet te maken met cross-site scripting?
XSS-kwetsbaarheden op websites of applicaties kunnen aanvallers in staat stellen JavaScript in de browsers van gebruikers te injecteren, waardoor de veiligheid van kwetsbare websites, webapplicaties en hun gebruikers in gevaar komt. Net zoals elk ander beveiligingsprobleem, zoals XSS, niet het probleem van de gebruiker is. Met andere woorden: als het uw gebruikers beïnvloedt, heeft het ook gevolgen voor u.
Af en toe wordt cross-site scripting gebruikt om een website te beschadigen in plaats van zich rechtstreeks op een gebruiker te richten, in gevallen waarin de aanvaller een website van binnenuit wil beschadigen. Door scripts in een website te injecteren, kan een aanvaller de inhoud van de website wijzigen of zelfs de browser omleiden naar een andere webpagina, bijvoorbeeld een webpagina die is geïnfecteerd met kwaadaardige code, om de inhoud van de website te wijzigen.
Hoe werkt cross-site scripting?
Eerst moet een aanvaller een manier vinden om kwaadaardige code (payload) te injecteren in de URL van een webpagina die het slachtoffer bezoekt om kwaadaardige JavaScript-code in de browser van het slachtoffer uit te voeren. Daarna moet het slachtoffer de website van de kwaadaardige code bezoeken om deze uit te voeren. Een aanvaller kan een social engineering- of phishing-aanval gebruiken om een kwaadaardige URL naar een bepaald slachtoffer te sturen als de aanvaller zich op een specifiek doelwit richt.
Om stap één mogelijk te maken, moet de kwetsbare website in staat zijn om gebruikersinvoer rechtstreeks in de pagina's op te nemen. Een aanvaller kan dan een kwaadaardige string in een webpagina invoegen, die door de browser van het slachtoffer als broncode wordt geïnterpreteerd wanneer deze de pagina ziet.
Wat zijn de soorten XSS-aanvallen?
XSS-aanvallen kunnen worden ingedeeld in 3 hoofdtypen. Hier volgen enkele:
- Gereflecteerde XSS : Het wordt weerspiegeld in XSS voor zover het kwaadaardige script afkomstig is van het huidige HTTP-verzoek.
- Opgeslagen XSS : een opgeslagen XSS waarin het kwaadaardige script zich in de database van een website bevindt.
- DOM-gebaseerde XSS : Een XSS gebaseerd op DOM-gegevens, waarbij de kwetsbaarheid zich aan de clientzijde bevindt in plaats van aan de kant van de server, staat bekend als DOM-gebaseerde XSS.
Hoe XSS voorkomen?
U moet ervoor zorgen dat uw invoer wordt opgeschoond om XSS-aanvallen te voorkomen. Zorg er bijvoorbeeld voor dat u gegevens die u van de browser ontvangt, niet rechtstreeks doorgeeft aan uw applicatiecode zonder eerst op fouten te controleren. Op de van Seahawk Media worden meer van dergelijke onderwerpen besproken die van belang kunnen zijn.