Introduction
Le Cross Site Scripting (XSS) est une attaque qui est rarement prise au sérieux par les non-initiés. En effet, à la différence de nombreuses techniques de piratage, celle-ci ne s'attaque pas à un serveur mais à l'internaute via une faille au niveau d'un serveur Web ou d'une application Web.
L'abréviation de Cross Site Scripting est "XSS" car en anglais, le "X" se prononce "cross", mais aussi parce que "CSS" fait référence à "Cross Site Scripting" (les développeurs web comprendrons).
Le principe
Il est plus simple d'expliquer cette faille par l'exemple. Soit le site www.unsitecomplice.fr, le moyen de vérifier s'il est vulnérable à une attaque de type CSS est de demander l'affichage d'une page inexistante. La particularité du nom de cette page est le fait qu'il contient des balises HTML :
http://www.unsitecomplice.fr/<B>nimportequoi</B>.html
Le site renvoie une page du type :
Erreur la page nimportequoi.html est introuvable.
Le site est bien vulnérable puisqu'il a renvoyé une page contenant le nom du fichier introuvable mais surtout parce que les balises HTML sont conservées. Le navigateur interprète donc le code HTML (ici les balises mettent simplement le texte en gras).
Bien entendu, il existe une multitude d'injections HTML différentes. Il ne tient qu'à vous d'imaginer toutes les possibilités...
Les conséquences possibles
Les conséquences semblent anodines au premier abord. Mais le CSS est exploitable de la manière suivante. Un pirate va envoyer un mail en HTML à sa victime. Ce mail comporte un lien sur un site vulnérable à un CSS que la victime a pour habitude de visiter. Les conséquences deviennent graves à partir du moment où le code HTML passé dans l'URL permet l'exécution de Javascript (balise <SCRIPT>) sur la machine de l'utilisateur. Effectivement, le pirate connaissant bien le Javascript peut facilement récupérer le cookie de la victime utilisé sur ce même site. La gravité croît alors avec la sensibilité des informations contenues dans le cookie (authentification, identificateur de session, ...)
Le CSS est une technique déclinable pour les applications Web, cette attaque fonctionne dès que l'application restitue dans un message le nom d'un fichier ou d'un paramètre présent dans une URL sans prendre en compte l'éventuelle présence de balises HTML.
Comment éviter ce type de faille
Chaque élément de l'URL subissant un traitement doit obligatoirement être filtré afin d'ôter toutes les balises HTML. Une simple transformation peut suffire pour les rendre inexécutables (par exemple le caractère < est remplacé par &lt; que le navigateur affiche bien < mais sans l'interpréter).
L'installation d'un firewall applicatif web (WAF) prend tout son intérêt dans ce contexte. Vous pouvez utiliser, par exemple,
Raptor WAF.
Pour aller plus loin
Vous pouvez utiliser des outils dédiés à ce type d'attaque pour tester votre site/applicatif web comme par exemple
XSStrike
Valgasu et Arnaud Jacques
28 Janvier 2002 / 2018
Tags
RECHERCHE DE VULNERABILITÉS
SITE WEB
Inscription à notre lettre d'information
Inscrivez-vous à notre
lettre d'information pour vous tenir au courant de nos actualités et de nos dernières trouvailles.