xssAan de slag met xss


Opmerkingen

Overzicht Cross-Site Scripting, gewoonlijk XSS genoemd, is een type webinjectie-injectie waarbij kwaadaardige scripts worden geïnjecteerd in vertrouwde websites.

XSS-aanvallen vinden plaats wanneer een aanvaller misbruik maakt van een fout in een webtoepassing of deze "exploiteert" om de nuttige lading van de aanvaller naar de browser van de client te verzenden. Deze fouten treden meestal op wanneer een webtoepassing gebruikersinvoer naar de browser stuurt zonder deze vooraf te valideren of coderen.

Een XSS-payload wordt uitgevoerd binnen het domein van de 'vertrouwde site' en heeft het potentieel om toegang te krijgen tot de cookies van die website, de DOM van de pagina te wijzigen en zelfs de browser of extensies van de klant te misbruiken.

XSS-typen

Hoewel het eindresultaat hetzelfde is voor alle XSS-aanvallen (een door de aanvaller gecontroleerde payload in de reactie van de server), zijn er drie verschillende soorten XSS-kwetsbaarheden.

  • Opgeslagen XSS is een aanval waarbij de XSS-lading permanent wordt opgeslagen op de doelwebsite, zoals in een database. Wanneer een klant (bijv. Slachtoffer) een pagina laadt zoals een forumbord of commentaarsectie die de lading laadt, wordt deze uitgevoerd in hun browser.
  • Reflected XSS is een aanval waarbij de XSS-payload met het verzoek naar de server wordt verzonden en terug wordt weerspiegeld in het antwoord. Deze aanvallen kunnen worden geactiveerd door op een bewerkte link te klikken, een formulier in te dienen of vele andere bezorgingsmechanismen.
  • Client Side XSS , ook wel DOM Based XSS genoemd , is een aanval die uitsluitend plaatsvindt in de browser van de client (dat wil zeggen, het wordt niet verzonden door de reactie van de server) door de DOM-omgeving te manipuleren om bestaande vertrouwde scripts op de pagina te dwingen om uit te voeren de XSS-payload.

Voorbeeld van zoekresultaten

Laten we aannemen dat we een pagina met zoekresultaten hebben waarop de zoekopdracht van een gebruiker wordt weergegeven. De onderstaande code is een voorbeeld van hoe dit zou kunnen worden gedaan in PHP:

Results for "<?php echo $_GET['query'] ?>"
 

Om dit te laten werken, zou u de pagina openen met een URL zoals:

https://yoursite.test/search?query=stackoverflow
 

In de reactie krijgen we:

Results for "stackoverflow"
 

Nu zullen we proberen onze lading in de reactie te injecteren:

https://yoursite.test/search?query=<script>alert(1)</script>
 

En onze nieuwe reactie:

Results for "<script>alert(1)</script>"
 

We hebben onze XSS-payload met succes geïnjecteerd.