Vulnérabilités XSS (Cross-Site Scripting) - PDF

Document Details

FoolproofSpinel1190

Uploaded by FoolproofSpinel1190

Université Djillali Liabès de Sidi Bel-Abbès

Tags

XSS Cross-Site Scripting web security vulnerabilities

Summary

This document explains Cross-Site Scripting (XSS) vulnerabilities. It discusses various types of XSS attacks, their mechanisms, and ways to prevent them. The text provides an introduction to the topic, explaining interactions between web domains and describing the objectives behind XSS attacks.

Full Transcript

Les attaques de type inter- domaines 1. Introduction Le World Wide Web se base sur l’existence d’hyperliens entre sites et domaines ; une certaine quantité d’interactions y est donc tolérée entre ces derniers. En fait, quasiment toutes les applications web modernes reprennent des contenus...

Les attaques de type inter- domaines 1. Introduction Le World Wide Web se base sur l’existence d’hyperliens entre sites et domaines ; une certaine quantité d’interactions y est donc tolérée entre ces derniers. En fait, quasiment toutes les applications web modernes reprennent des contenus issus de plusieurs domaines – lesquels relèvent parfois d’entités indépendantes, voire concurrentes. 2. Emplois des interactions inter-domaines L’objectif original du Web consistait à proposer un média où les documents scientifiques et techniques pourraient pointer directement vers leurs références, en utilisant les hyperliens. Dans son aspect le plus élémentaire, un lien entre sites est introduit par la balise , comme suit: Voici un lien! Les images peuvent également servir de lien: Le langage JavaScript sert parfois à ouvrir des liens dans de nouvelles pages, comme dans la fenêtre surgissante (pop-up) que voici : window.open(’http://www.example.com’,’exemple’,’width=400,height=300’); Les liens qui provoquent l’apparition de nouvelles fenêtres ou renvoient la fenêtre actuelle du navigateur vers un nouveau site émettent des requêtes HTTP GET vers le serveur web. Les exemples donnés ci-dessus provoqueraient la requête GET suivante : GET index.html HTTP/1.1 Il est impossible de distinguer entre les actions intentionnelles d’un utilisateur et les actions menées automatiquement par la page web qu’il visite. VULNERABILITES DE TYPE XSS (CROSS SITE SCRIPTING) 1. INTRODUCTION Le Cross Site Scripting, abrégé XSS pour le différencier des feuilles de styles CSS, est une des attaques les plus répandues dans le monde Internet actuel. XSS permet de voler et de manipuler des données privées d'un utilisateur à son insu. Les XSS font partie de la catégorie des vulnérabilités par injection de code au même titre que les injections SQL. XSS est un mécanisme qui fait intervenir un pirate, un client (un utilisateur) et un site web. En général, le point principal visé par XSS est le vol de cookie et donc d'identifiant de session,... 2. QU’EST-CE QUE LE XSS ? Le XSS (Cross Site Scripting) consiste à insérer un script malveillant dans le contenu dynamique du site Web ciblé, directement interprétable par le navigateur Web, comme, par exemple, du JavaScript ou du HTML et qui sera reçu par le navigateur de la victime. Cette attaque ne vise pas directement le site (coté serveur) comme le ferait une injection SQL mais concerne plutôt la partie client c’est-à-dire l’utilisateur (ou le navigateur). Ce dernier ne fera aucune différence entre le code du site et celui injecté par le pirate, il va donc l’exécuter sans vérifier ou valider. 3. L’OBJECTIF DE L’ATTAQUE PAR XSS ? Le code malveillant est exécuté dans le navigateur de l’internaute pour : Récolter des données : document.cookie (vol de session) ; Modifier l’attribut action d’un formulaire (modifier la valeur du chemin ou l'URL du script qui va recevoir les données du formulaire) ; Diffuser un malware ; Perturber des réseaux sociaux et hameçonner les identifiants d’un utilisateur ; Exploiter des failles de sécurité côté client ; Modifier l’apparence de la page web ce qui nuit à l’image du site ; Rediriger vers une page de même apparence (pour du phishing). 4. Quels sont les types d’attaques XSS ? Il existe trois types d’attaques XSS : les attaques XSS stockées (stored XSS), les attaques XSS reflétées (reflected XSS) et les attaques XSS basées sur le DOM (DOM-based XSS). Toutes consistent en l’utilisation de scripts malveillants entrés côté client et qui seront inclus et interprétés sur le navigateur d’un utilisateur. 4.1 Attaques XSS stockées (stored XSS) Comme son nom l’indique, lors d’une telle attaque, le script malveillant sera stocké sur le serveur. Ce qui peut avoir des conséquences dangereuses car tout utilisateur qui visite la page contenant le script injecté peut être infecté, donc affecté par l’attaque XSS via son navigateur. De fait, il s’agit de l’attaque XSS la plus dangereuse car l’attaquant n’injecte le code malveillant dans le serveur qu’une seule fois et peut toucher un grand nombre d’utilisateurs, parmi lesquels des administrateurs. Figure 1. Schéma explicatif de l’attaque XSS stockée 4.2 Attaques XSS reflétées (reflected XSS) Lors d’une attaque XSS reflétée, un attaquant transmet à un utilisateur du code via une URL, un système de chat, un email de phishing ou un message privé sur les réseaux sociaux afin de forcer un clic sur le lien. Et si clic il y a, une requête contenant un script malveillant qui sera envoyée au serveur puis le code sera renvoyé en réponse à l’utilisateur car il ne sera pas stocké. Figure 2. Schéma explicatif de l’attaque XSS reflétée 4.3 Attaques XSS basées sur le DOM (DOM-based XSS) Les DOM-based XSS sont également des attaques exécutées côté client, à la seule différence des deux premières attaques qu’elles n’utilisent pas le serveur, elles exploitent uniquement le navigateur de la victime car le DOM (Document Object Model) est une interface permettant de traiter et modifier le contenu d’une page web. Dans ce cas de figure donc, le script malveillant injecté permettra de modifier la structure du DOM et ainsi permettre un vol de données par exemple. La plupart du temps, les propriétés DOM telles que document.location, document.write et document.anchors sont utilisées pour lancer ce type d’attaque XSS. Cependant, cette vulnérabilité est plutôt rare car il est très difficile de l’identifier. 5. Exemples d’attaques XSS Imaginons que l'on trouve un site vulnérable, qui propose par exemple de laisser un commentaire aux visiteurs. On pourra injecter un script qui affiche un message « bonjour » Et l’insérer dans la zone de saisie. Ainsi, lors de l'affichage du commentaire le site exécutera quelque chose comme cela : Lors du chargement de la page, les navigateurs web seront forcés d'exécuter le code injecté pour afficher une petite boite de dialogue, contenant le message "bonjour". A partir de là, les possibilités d'injection sont nombreuses, voir infinies. Voici quelques exemples très courants : 1. rediriger tous les visiteurs vers un autre site : 2. afficher un contenu souhaité par le hacker (message, pubs...) : 3. voler des informations des utilisateurs en récupérant les cookies, sessions... : 6. Comment se protéger des failles XSS ? Pour prévenir les attaques XSS, il faut partir du principe que les données reçues par une application web ne peuvent pas être considérées comme « toujours » sûres. Il est donc important d’implémenter des mesures de protection pour traiter toutes les données venant de l’extérieur. Ainsi, tout contenu doit être filtré, validé et encodé avant d’être utilisé par l’application. 1. L’XSS peu être évité des la phase de développement de l’application, en validant tous les INPUT et les OUTPUT vers (et en provenance de) l’application. Côté client avec JavaScript il faut vérifier les données saisies par les utilisateurs. Côté serveur, il faut vérifier les données récupérer en paramètre. Il faut rejeter toutes les données qui ne sont pas conformes à ce qui est attendu. 2. Éliminer tous les caractères spéciaux Eliminer les caractères spéciaux qui pourront être utilisées dans un script, en les remplaçant avant de les afficher sur le navigateur. Pour cela, Il y’a des fonctions déjà disponible suivant le langage utilisé: 3. Une autre méthode permet de prévenir l’XSS avec moins de codage comparé a la méthode de validation des INPUT et des OUTPUT avec l’attribut « HTTP only Cookies » qui peut être activé pour les cookies… L’utilisation de cet attribut rend les cookies inaccessible par n’importe quel script javascript. Conclusion Les attaques de type XSS (Cross-Site Scripting) représentent une menace sérieuse pour la sécurité des applications web. Elles exploitent les vulnérabilités des sites pour injecter des scripts malveillants, permettant aux attaquants de voler des informations sensibles, de manipuler le contenu des pages ou de rediriger les utilisateurs vers des sites malveillants. Pour se protéger contre ces attaques, il est essentiel de valider et d'échapper correctement toutes les entrées utilisateur, d'utiliser des en-têtes de sécurité appropriés et de mettre en œuvre des pratiques de codage sécurisées. La sensibilisation des développeurs et des utilisateurs aux risques associés aux XSS est également cruciale pour renforcer la sécurité des applications web.

Use Quizgecko on...
Browser
Browser