Qu’est-ce qu’un script intersite stocké/persistant ?

Le script intersite stocké est un type de script intersite (XSS) dans lequel l’attaquant envoie d’abord la charge utile à l’application Web, puis l’application enregistre (c’est-à-dire stocke/perserve) la charge utile (par exemple, dans une base de données ou un serveur). fichiers texte latéraux), et enfin, l’application exécute involontairement la charge utile pour chaque victime visitant ses pages Web. Le script intersite stocké est également appelé script intersite persistant .

Exemple de script intersite stocké/persistant

Dans cet exemple, le développeur souhaite inclure une simple section de commentaire sur l’une de ses pages ( page.php ) sans déployer un CMS complet tel que WordPress. Ils incluent le formulaire suivant sur la page web page.php :

<form action="/page.php" method="post" id="comment">
  <label for="name">Your name:label>
  <input type="text" id="name" name="name">
  <label for "comment">Your comment:label>
  <textarea id="comment" name="comment" rows="5" cols="30">textarea>
  <button type="submit" form="comment" value="comment">Add a commentbutton>
form>
 

Le fichier page.php comprend le code suivant :

// Add a new comment into the database using PDO to avoid SQL injection
(...)
$name=$_POST["name"];
$comment=$_POST["comment"];
$sql = "INSERT INTO comments (name, comment) VALUES (?,?)";
$statement = $pdo->prepare($sql);
$statement->execute([$name, $comment]);
(...)
// Display existing comments
$comments = $db->query('SELECT * FROM comments')->fetchAll();
foreach($comments as $comment) {
    echo "".$comment['name']."";
    echo "".$comment['comment']."";
}
(...)
 

Comme vous pouvez le voir, l’application insère le commentaire dans la base de données sans aucune validation ni assainissement et l’affiche ensuite sur la même page pour les autres utilisateurs, encore une fois sans validation ni assainissement.

L’attaque par script intersite stocké

L’attaquant saisit le commentaire suivant dans le formulaire, en laissant le nom vide :

<script>alert("LEAVE THIS PAGE! YOU ARE BEING HACKED!");</script>
 

Le commentaire est enregistré dans la base de données. Désormais, lorsqu’un utilisateur visite la page, son navigateur interprète le code suivant :

<tr><td>td><td><script>alert("LEAVE THIS PAGE! YOU ARE BEING HACKED!");script>td>tr>
 

Le navigateur trouve une

Notre expertise, à votre service, dans le domaine de la cyber sécurité.