XSS réfléchi avec seulement des balises personnalisées

Reflected XSS into HTML context with all tags blocked except custom ones

Cette application bloque toutes les balises HTML « classiques » ; seules les balises personnalisées (custom elements) sont autorisées. L'objectif du lab : injecter une balise personnalisée qui exécute automatiquement alert(document.cookie) (ici on veut voler la cookie de session via l'alerte).

Observations et démarche (réformulées)

  • Comme toutes les balises standards sont filtrées, la technique consiste à définir/insérer une balise personnalisée que le navigateur acceptera.

  • Une balise personnalisée peut contenir des gestionnaires d'événements — mais certains événements ne se déclenchent que si l'élément peut recevoir le focus.

  • Les éléments personnalisés ne sont focalisables par défaut ; il faut donc forcer la focalisation en ajoutant tabindex=1 pour que l'événement lié s'exécute lorsqu'on interagit (par ex. en cliquant ou en tabulant).

  1. Balise simple — non focalisable (n'exécute pas l'alerte) :

  1. Même balise, rendue focalisable avec tabindex — le onfocus fonctionne :

Preuve de concept final (exfiltration via redirection)

  • On construit une URL qui injecte la balise personnalisée avec un onfocus appelant alert(document.cookie) et on force le focus par tabindex=1.

  • Exemple de payload à envoyer à la victime (injection URL-encodée dans le paramètre search) :

Mis à jour

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