bmweb.fr

Faille XSS (injection de code)

Définition faille XSS (cross-site scripting)

  • Le CROSS-SITE-SCRIPTING est une faille de sécurité des sites web permettant d’injecter du code via un formulaire pour qu’il soit exécuté au chargement de la page sur l’ordinateur de la victime.
  • Ce code peut être de n’importe quel langage que le navigateur sait interpréter (Javascript, Java, Flash,...).
  • L’utilisation de cette faille peut permettre de :
    • Tromper l’utilisateur (hameçonnage)
    • Voler sa session en cours par la récupération de ses cookies
    • Modifier l’apparence d’une page web
    • De rediriger l’utilisateur vers une page d’un site malveillant
  • Le CROSS-SITE-SCRIPTING est abrégé en XSS pour ne pas le confondre avec les feuilles de style (CSS). X se disant "Cross" en anglais.
  • Cette faille peut être utilisée de manière unique dans un champ de recherche d’un site web (peu d’intérêt) mais peu aussi être exécutée à chaque fois qu’un utilisateur visitera la page si le code est inséré dans les commentaires d’un blog par exemple.
  • Pour en savoir plus : https://fr.wikipedia.org/wiki/Cross-site_scripting

Objectif et déroulement de l’attaque

  • Objectif : Utiliser un champ de recherche ou de saisie d’un site web pour injecter un script Javascript et le faire interpréter par le navigateur
  • Déroulement de l’attaque :
    • Injecter un script Javascript sur un formulaire web
    • Voir le résultat de l’injection de code

Pré-requis et environnement

  • VM : Kali Linux avec le site vulnérable installé
  • Dans le terminal, lancer les commandes suivantes pour démarrer le service mysql et le service Apache :
root@kali:~# service mysql start
root@kali:~# service apache2 start

Afficher une alerte javascript

  • Dans le champ de recherche, saisir le code suivant :
<script>alert("Faille XSS");</script>
Afficher une alerte javascript
  • Taper sur la touche [Entrée]
  • Un message popup s’affiche au rechargement de la page car le site web n’est pas protégé contre le XSS :
Afficher une alerte javascript

Incruster une fausse pub avec un iframe

  • Dans le champ de commentaire du site vulnérable, saisir le code suivant :
<iframe src="http://www.bmweb.fr/fausse_pub/fausse_pub.htm" width="350" height="250" style=""></iframe>
  • La page s’affiche maintenant systématiquement avec une fausse publicité et un lien vers un site pirate :
Incruster une fausse pub avec un iframe

Incruster une autre page web avec un iframe

  • Dans le champ de commentaire, saisir le code suivant :
<iframe src="http://www.bmweb.fr" style="width:100%;height:100%;top:0;left:0;position:fixed"></iframe>
  • La page web s’affichera avec une autre page web qui remplace la page d’origine :
Incruster une autre page web avec un iframe
  • Si vous regardez dans la barre d’adresse, l’adresse est celle du site d’origine alors que la page affichée est hébergée sur un autre site. Les conséquences peuvent être sans limite.

Se protéger des failles XSS

  • Code qui exécute l’affichage de la recherche sans aucune protection :
<?php
if(isset($_POST['query'])) {
echo "Vous avez cherché : " . $_POST['query'];
} else {
?>
  • Code qui exécute l’affichage de la recherche en échappant les caractères spéciaux pour se protéger des failles XSS :
<?php
if(isset($_POST['query'])) {
echo "Vous avez cherché : " . htmlentities($_POST['query']);
} else {
?>
Haut de page