Qu’est-ce que le cross-site scripting ?

Le script intersite (XSS) est une vulnérabilité Web qui permet à un pirate malveillant d’introduire (d’injecter) des commandes indésirables dans du code côté client légitime (généralement JavaScript) exécuté par un navigateur au nom de l’application Web.


Gravité: grave
Prévalence: découvert très souvent
Portée: sites et applications web
Impact technique : code malveillant exécuté dans le navigateur
Conséquences dans le pire des cas : compromis complet du système
Solution rapide: utiliser le filtrage et l’encodage des entrées utilisateur

Comment fonctionne le cross-site scripting ?

La plupart des sites Web et des applications Web exécutent du code côté client dans le navigateur Web à l’aide d’une sorte de langage de script dynamique. Dans la grande majorité des cas, ce langage est JavaScript. Les sites Web et les applications Web HTML pur existent toujours, mais ils sont rares simplement parce que les scripts côté client améliorent considérablement l’interface utilisateur et les capacités du site Web ou de l’application Web. Vous pouvez supposer en toute sécurité que plus de 99 % des sites Web et des applications Web que vous rencontrez incluent du code JavaScript côté client. Ceci, à son tour, signifie que les navigateurs des utilisateurs doivent être capables d’interpréter n’importe quel code JavaScript au nom de l’application Web.

La plupart des applications Web et des sites Web interagissent également avec les utilisateurs d’une manière ou d’une autre, même s’ils n’utilisent pas JavaScript. L’interaction nécessite une certaine forme de saisie de l’utilisateur. Par exemple, l’utilisateur peut avoir besoin de saisir son nom d’utilisateur pour se connecter à l’application Web et l’application peut afficher ce nom d’utilisateur plus tard dans l’interface utilisateur. Cela signifie que l’application traite les entrées de l’utilisateur, puis les affiche dans le navigateur Web.

Combinées, ces deux conditions jettent les bases de la vulnérabilité de sécurité Web la plus courante – le script intersite, qui est un type d’attaque par injection. Si un attaquant est capable d’inclure du code JavaScript dans un paramètre d’entrée utilisateur et que l’application renvoie directement ce code dans sa sortie HTML et l’envoie au navigateur client, le navigateur exécutera le JavaScript malveillant. Chaque fois qu’une page Web fait directement écho à l’entrée de l’utilisateur, les attaquants pourront exécuter des scripts malveillants dans le navigateur client, même si la page elle-même est construite uniquement avec des balises HTML statiques et n’inclut pas de JavaScript.

Contrairement à la plupart des autres vulnérabilités des applications Web, celle-ci n’affecte pas directement le back-end de l’application (le serveur Web). Cela affecte les utilisateurs réguliers de l’application Web ou les victimes qui sont amenées à y accéder. XSS est également possible pour certaines API qui autorisent JavaScript, par exemple, une API peut présenter à l’utilisateur un message d’erreur contenant du JavaScript précédemment injecté par un attaquant.

Pendant de nombreuses années, les scripts intersites avaient leur propre catégorie distincte dans le Top 10 de l’OWASP. Cependant, en 2021, les créateurs de la liste ont décidé de l’incorporer dans la catégorie Injection avec l’injection SQL , RCE et bien d’autres.

Types de vulnérabilités de script intersite

Il existe 2 techniques de cross-site scripting très courantes :

De plus, il existe 2 autres techniques de script intersite qui sont rencontrées moins souvent que les deux ci-dessus :

Ces quatre types d’attaques XSS sont décrits dans des chapitres distincts.

Vecteurs d’attaque XSS

Les éléments de langage JavaScript courants utilisés dans les charges utiles malveillantes pour effectuer des attaques de script intersite incluent :

  • La
  • Les attributs onloadet :onerror
  • Les attributs de la balise :
  • Les attributs de la balise :
  • La