Magazine High tech

Les injections XSS

Publié le 31 décembre 2008 par Mederic

Mon dernier billet s’intéressait aux attaques des sites Web par injections SQL. Ces attaques visent à prendre possession du site en modifiant les requêtes SQL vérifiant l’authentification de l’utilisateur qui se connecte. Elles peuvent être plus dévastatrices en altérant la base de données des comptes utilisateurs voire même en altérant le serveur hébergeant le SGBD.

Un autre type d’attaque par injection vise principalement les utilisateurs afin de prendre possession de leurs données personnelles. Cette technique, appelée le XSS, pour Cross Site Scripting, permet à un pirate de :

  • Exécuter un script malveillant dans un navigateur Web client
  • Insérer des balises <script>, <object>, <applet>, <form>, <embed>, <iframe>, <a>…
  • Voler des informations de session Web et des cookies d'authentification
  • Accéder à l'ordinateur client

Considérons une page Web dans laquelle un utilisateur peut saisir ses informations personnelles, comme son login, son adresse email et un texte libre. Ce genre de page se trouve sur les forums de discussion par exemple.

pageForum.png

Il n’y a aucune raison, a priori, de tester le contenu du texte libre. Seulement, ce qu’on oublie parfois, c’est que ce texte sera affiché, tel quel, dans la liste des réponses de chaque utilisateur du forum.
Si ce texte est un script Javascript, par exemple, l’affichage de ce texte dans la liste des réponses du forum déclenchera l’exécution de ce script. Le serveur ne subit, apparemment, aucune altération. Seul l’utilisateur, qui navigue sur la page contenant la liste des réponses du forum, sera affecté.
Prenons comme exemple de script :

<script>document.location.replace…</script>

L’utilisateur qui navigue sur le forum sera automatiquement redirigé sur un autre site. Cet autre site peut être visuellement identique et peut demander à l’utilisateur de s’authentifier à nouveau, ce qui va permettre au pirate de voler l’identifiant et le mot de passe de cet utilisateur.

Conclusion

La règle de base à suivre est donc de ne jamais faire confiance aux données saisies par un utilisateur. Toute entrée doit être considérée comme malicieuse et donc doit être testée avant sa sauvegarde dans la base de données du site.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Mederic 82 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte