
Ressource éducative sur les techniques d'attaque Cross-site Scripting (XSS), couvrant les vecteurs non persistants, persistants et basés sur le DOM avec des exemples pratiques pour l'apprentissage de la sécurité.
Le Cross-site Scripting (XSS) est une technique d'attaque qui consiste à injecter du code fourni par l'attaquant dans le navigateur d'un utilisateur. Une instance de navigateur peut être un client web standard ou un objet navigateur intégré dans un logiciel, comme le navigateur de WinAmp, un lecteur RSS ou un client email. Le code lui-même est généralement écrit en HTML/JavaScript, mais peut également s'étendre à VBScript, ActiveX, Java, Flash ou toute autre technologie prise en charge par le navigateur. Lorsqu'un attaquant amène le navigateur d'un utilisateur à exécuter son code, ce code s'exécute dans le contexte de sécurité (ou zone) du site web hôte. Avec ce niveau de privilège, le code peut lire, modifier et transmettre toute donnée sensible accessible par le navigateur. Un utilisateur victime de Cross-site Scripting peut voir son compte piraté (vol de cookies), être redirigé vers un autre site, ou voir du contenu frauduleux délivré par le site qu'il visite. Les attaques Cross-site Scripting compromettent essentiellement la relation de confiance entre un utilisateur et le site web. Les applications qui utilisent des instances d'objets navigateur chargeant du contenu à partir du système de fichiers peuvent exécuter du code sous la zone de la machine locale, permettant une compromission du système.
Il existe trois types d'attaques Cross-site Scripting : non persistantes, persistantes et basées sur le DOM. Les attaques non persistantes et basées sur le DOM nécessitent qu'un utilisateur visite un lien spécialement conçu contenant du code malveillant, ou visite une page web malveillante contenant un formulaire web, qui, une fois soumis au site vulnérable, déclenche l'attaque. L'utilisation d'un formulaire malveillant se produit souvent lorsque la ressource vulnérable n'accepte que les requêtes HTTP POST. Dans ce cas, le formulaire peut être soumis automatiquement, à l'insu de la victime (par exemple en utilisant JavaScript). En cliquant sur le lien malveillant ou en soumettant le formulaire malveillant, la charge utile XSS est renvoyée et interprétée par le navigateur de l'utilisateur, puis exécutée. Une autre technique pour envoyer des requêtes quasi arbitraires (GET et POST) consiste à utiliser un client intégré, comme Adobe Flash. Les attaques persistantes se produisent lorsque le code malveillant est soumis à un site web où il est stocké pendant un certain temps. Les cibles préférées des attaquants incluent souvent les messages de forum, les messages webmail et les logiciels de chat web. L'utilisateur non méfiant n'a pas besoin d'interagir avec un site/lien supplémentaire (par exemple un site attaquant ou un lien malveillant envoyé par email), il lui suffit de consulter la page web contenant le code.