Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Faille XSS
Le cross-site scripting (abrégé XSS), est un type de faille de sécurité des sites web permettant d'injecter du contenu dans une page, d'injecter un script dans l'URL de la page cibler ou bien dans un champ à remplir.
Comment la déceler ?
Vous arrivez maintenant sur la page internet de votre cible, la faille se trouve dans tous les formulaires (moteur de recherche, systèmes de commentaires, livre d'or chat, essayez-les tous !) à condition que le HTML soit interprété. Pour vérifier si le HTML est activé ou désactivé dans un champ de formulaire on peut effectuer plusieurs tests commencés tout d'abord par insérer du HTML basique dans le champ :
<b>Test</b>
si le moteur de recherche (par exemple) indique ceci : aucun résultat trouvé pour le terme "Test" c'est que la faille XSS est bien là, s'il affiche ceci : Aucun résultat trouvé pour le terme "Test" il n'y a pas de faille cherchez ailleurs sur le site ou passez votre chemin.
Il existe plusieurs types de faille xss,
La faille xss éphemere
Imaginons que j'ai un champ déroulant qui me propose de choisir un pays.
Une fois avoir sélectionné un pays, ici "English", l'URL change, on obtiens quelque chose comme ça:
Ce qu'il faut comprendre c'est que "English" est une variable, que l'on peut éditer ! Si dans l'URL je modifie "English" en "Franglais" et que je valide, hop je me retrouve avec "Franglais" dans le champ.
Si on remplaçait "English" par un petit script :3 ! Par exemple :
http://localhost:81/vulnerabilities/xss_d/?default=<script>alert("Ah!")</script>
Quand je valide cette URL une boîte d'alerte apparaît avec "Ah!" d'afficher ! En partant de cette constatation on peut facilement imaginer toute l'étendue des possibilités offertes par l'exploitation de cette faille :
- Récupération de cookies
- Redirection de page (phishing par exemple)
- Keylogging,
- ...
La faille xss permanante
Il est très fréquent de trouver un espace dédié aux commentaires sur internet, un endroit ou l'on peut laisser une trace, si cet espace n'est pas correctement protégé il est simple d'y glisser du code :3
Imaginons que je laisse un commentaire qui ressemble à ça :
Mon commentaire qui s'affichera sera "Je suis un trol", et à chaque fois que la page sera chargée, une boîte de dialogue aparaitra avec a l'intérieur "Je suis un gros trol".
La solution pour s'en protéger
Une fonction existe en PHP pour résoudre ce problème, htmlspecialchars(). Elle permet de remplacer les carractères spéciaux par des entités HTML. Exemple :
- Le symbole & devient &
- Le symbole " devient "
- Le symbole ' devient '
Pour se protéger des failles XSS, il est essentiel de ne pas faire confiance en l'utilisateur et de nettoyer en permanence ses entrées.