Présentation du principe des failles XSS
Étape 1 : écrire le formulaire
Dans un premier temps, pour illustrer la faille nous allons créer un formulaire anodin :
<form method="post" action="envoi.php"> <label for="nom">Nom : </label> <input type="text" id="nom" name="nom" /> <input type="submit" value="Envoyer" /> </form>
Nous avons ici un formulaire qui enverra le nom de la personne à la page « envoi.php ». Le tout par le biais de la méthode POST. (cours lié : Comparatif : GET ou POST ?)
Étape 2 : créer la page d’envoi
Maintenant, nous allons créer la page qui recevra ces données :
La page envoi.php nous servira uniquement à réutiliser les données, nous n’allons pas les stocker dans une base de données pour nos tests.
<p>Résultat de l'envoi : </p> <p>Votre nom est : <?php echo $_POST['nom']; ?> </p>
Oui, c’est tout ! Rien que ces deux lignes sont suffisantes pour démontrer qu’une faille peut créer des dégâts importants sur votre serveur.
En effet, la valeur de $_POST[‘nom’] peut même contenir du code HTML ou JavaScript si vous le souhaitez puisqu’aucune vérification n’est faite !
Étape 3 : exploiter la faille
Exemple d’utilisation de la faille :
Je peux choisir d’envoyer du code JavaScript directement dans la variable de mon nom, ce qui enverra à notre page « envoi.php » quelque chose du genre :
<p>Résultat de l'envoi : </p> <p>Votre nom est : <script>alert("En voilà une faille !");</script></p>
Et donc le résultat ici est qu’au lieu de voir afficher un nom sur la page, nous verrons notre alerte directement à l’écran, autrement dit nous avons injecté du code JavaScript dans la variable contenant notre nom !