Qu'est-ce qu'une faille XSS (Cross-Site Scripting) ?

  • updated 02-10-2024 20:00
  • author : Phosphataz
  • Une faille XSS (Cross-Site Scripting) est une vulnérabilité de sécurité qui permet à un attaquant d'injecter du code malveillant, souvent du JavaScript, dans une page web. Ce code est ensuite exécuté dans le navigateur des autres utilisateurs qui consultent cette page, sans qu'ils s'en aperçoivent. Les failles XSS peuvent être très dangereuses car elles permettent aux attaquants de contourner les mécanismes de sécurité du navigateur et de voler des informations sensibles.


    Types de XSS


    • 1 - XSS stocké : Le script malveillant est sauvegardé directement sur le serveur, dans la base la base de donné. En suite à chaque fois que la page est consultée par un utilisateur quelconque le serveur envoi la page avec les données de cette page, sauf que ces données en question sont du code javascript, qui peut être exécuter sur le navigateur de l'utilisateur.


    Exemple :

    • - Un attaquant soumet un commentaire sous un tweet, sous un produit ou une publication facebook, ou sous un forum.
    • - Le commentaite contenant du JavaScript.
    • - Ce script est stocké sur le serveur et exécuté chaque fois qu'un utilisateur visite la page de ce commentaire.
    • - Exemple de code :
    <script>alert('Oups votre cookie a été volé!');</script>
    


    • 2 - XSS réfléchi : Ce type d'attaque se produit lorsque les données soumises par un utilisateur (via une URL, un formulaire, etc.) sont immédiatement renvoyées par l'application web sans être correctement validées ou échappées.


    Exemple :

    • L'attaquant envoie une URL contenant du code malveillant à une victime, comme dans le cas d'un lien(tiktok ou youtube) avec du code javascript injecté dans les paramètres GET.
    • La victime clique sur le lien, et le navigateur ouvre le lien
    • Comme les données sont renvoyées depuis le serveut sans être traitées correctement, eh bien une fois la page chargée le navigateur va exécuter le code javascript malveillant.


    https://exemple.com/recherche?query=<script>alert('XSS')</script>
    

    Dans ce exemple on a transmis un code javascript <script>alert('XSS')</script> comme valeur au paramêtre query. Si l'application dans le côté serveur ne valide pas correctement ce script, et le renvoie intact, il sera exécuté dans le navigateur.


    3 - XSS DOM : Ce type d'attaque se produit lorsque le script malveillant est injecté dans le Document Object Model (DOM) du navigateur, sans que la page ait besoin d'être rechargée depuis le serveur.


    Exemple :

    • Le site web modifie dynamiquement le contenu de la page avec du JavaScript, en utilisant des données de l'URL sans vérifier leur sécurité.


    var query = document.location.search;
    document.write(query); // Le contenu de l'URL est injecté directement dans la page
    



    Conséquences possibles


    • - Vol de cookies et données de session : Un attaquant peut voler les cookies de session pour usurper l'identité de l'utilisateur.
    • - Redirections malveillantes : L'attaquant peut rediriger les utilisateurs vers des sites frauduleux pour voler des informations.
    • - Exécution de commandes malveillantes : Le script injecté peut exécuter des actions à l'insu de l'utilisateur, comme modifier des paramètres de compte ou envoyer des requêtes sur d'autres services.


    Comment s'en protéger ?


    • - Échapper correctement toutes les entrées utilisateur.
    • - Utiliser des Content Security Policies (CSP).
    • - Valider et filtrer les données côté serveur et client.