XSS DOM stocké

Stored DOM XSS

Ce laboratoire démontre une vulnérabilité DOM stockée dans la fonctionnalité de commentaires du blog. Pour résoudre le lab, exploiter cette vulnérabilité afin d’exécuter la fonction alert().

si on insère dans la zone de commentaires le classique script :

on remarque que le site supprime une partie du commentaire.

Voici la fonction en question :

  • La fonction escapeHTML(html) n’échappe que la première occurrence de < et > (utilisation de replace simple).

  • Comme le code utilise ensuite innerHTML pour insérer les valeurs, des balises malveillantes peuvent subsister et être interprétées par le navigateur.

  • Le filtrage n’est donc effectif que pour le premier match ; les occurrences suivantes restent vulnérables.

  • Utiliser un remplacement global (replaceAll ou une expression régulière globale) pour échapper toutes les occurrences de < et >.

  • Éviter d’utiliser innerHTML pour des données non fiables ; préférer textContent ou createTextNode

Payloads exploitables

  • Fermer puis injecter un script :

  • Forcer une erreur d’image pour déclencher onerror:

Ces payloads fonctionnent parce que seuls quelques caractères sont transformés et que des occurrences supplémentaires de </> restent interprétables.

Mis à jour

Ce contenu vous a-t-il été utile ?