Le XSS : la petite faille qui peut entraîner une catastrophe

Un site Web peut subir différents types d’attaques : un DDOS, une injection de code, un defacement, un leak et dans la catégorie des « petites » failles, on retrouve les failles XSS.

Une faille Cross Site Scripting, appelé XSS, pour ne pas être confondue avec l’acronyme CSS, qui désigne les feuilles de style, permet d’injecter du code. Sur un site, on trouve différents points d’injections : l’URL mais également les formulaires de contacts, les barres de recherche, les espaces de commentaires, etc. Pour résumer de façon rapide, tous les espaces dans lesquels l’internaute écrit ou envoie des informations sur un site peuvent potentiellement permettre d’injecter du code.

Le XSS se présente généralement ainsi « <script>alert('XSS')</script> » et exploite généralement particulièrement les descripteurs HTML et Javascript. On peut les catégoriser en deux types : les attaques volatiles et les attaques persistantes.

Les attaques volatiles sont des injections « forcées » par l’attaquant, qui veut amener sa victime à suivre un lien pour réaliser des actions non prévues.

Les attaques persistantes sont celles qui permettent d’insérer du code directement dans un fichier, une base de données ou autre.

Les attaques XSS sont parmi les plus simples à mettre en œuvre. En effet, elles ne requièrent pas de compétences particulières et certains outils font déjà le travail. A titre d’exemple, lorsque le site a ouvert, j’ai eu le « plaisir » de découvrir que des petits malins avaient procédé à quelques tests.

Les attaques peuvent être manuelles ou automatisées. Elles sont manuelles lorsque l’attaquant va chercher lui-même les différents points d’entrée possibles et les tester un par un, sur des périodes de temps différentes afin de passer sous le radar d’alerte. Elles apparaissent tout de même dans les logs du site mais selon la taille du site et son trafic, elles peuvent passer inaperçue, surtout si une alterne n’a pas été créée et que personne ne lit régulièrement les logs. Elles peuvent être automatisées lorsque l’on utilise un outil qui va littéralement bombarder un site avec différents scripts sur différents points d’entrée, sur une période de temps très réduite. C’est notamment ce que fait un scanner de sites. Il est d’ailleurs assez rare qu’un site ne présente pas de failles XSS.

En effet, trafic oblige, la plupart des sites – surtout commerciaux – comportent des modules complémentaires et des fonctionnalités ludiques. Mais les applications ne sont pas forcément testées et lorsqu’elles le sont, ne sont pas nécessairement patchées afin de corriger les éventuelles vulénrabilités. Il faut donc que le code soit sain et vérifié.

Les conséquences d’une attaque XSS sont diverses. Cela peut permettre de récupérer des cookies des utilisateurs d’un site et donc, de voler des informations de connexion. Il est également possible de rediriger les visiteurs d’un site vers une autre URL voire de récupérer des fichiers sur des disques durs d’une victime.

Pour protéger un site contre des attaques XSS, il convient de filtrer les données qui peuvent être envoyées par des utilisateurs, par exemple en empêchant qu’ils puissent utiliser un certain type de code, en limitant le nombre de caractères – certaines attaques comportent des scripts qui sont particulièrement longs – en limitant également certains types de caractères, etc.

Procéder à des audits régulièrement peut également permettre d’éviter les mauvaises surprises. Selon la taille et la sensibilité du site, passer par une entreprise spécialisée en sécurité informatique ou le faire soi-même en utilisant différents scanners de vulnérabilités (ce point fera l’objet d’un billet ultérieur). Enfin, lorsque de nouvelles fonctionnalités sont ajoutées, il convient de lire les différentes documentations inhérentes à ces dernières afin de voir ce qu’elles peuvent éventuellement permettre à un attaquant et donc s’en prémunir.  

Commentaires

Pour ceux qui veulent des informations plus techniques sur la prévention des XSS c'est par ici 

PS : on se connait ?

Oh oui ! :) Merci pour le complément d'information.
PS : Non mais j'ai vu que Sebdraven avait publié un article que j'ai bien aimé donc j'ai rajouté le site :)

ah, et au fait, un XSS c'est pas juste "-<-script->-alert-(-1-)-<-/-script->-" ;) : http://html5sec.org/

coucou

alert(1)

Ahah, le mec qui a de l'espoir ! :D

Ajouter un commentaire