XSS avec CSP et technique de contournement

Reflected XSS protected by CSP, with CSP bypass

Description du laboratoire

Cross-site scripting réfléchi protégé par une Content Security Policy (CSP). Le but est d’exécuter alert() en contournant la CSP. La solution prévue fonctionne uniquement sur Chrome.

Objectif

Trouver un vecteur XSS réfléchi qui contourne la CSP et appelle la fonction alert().

Observations

  • En injectant une balise <script> dans le paramètre, la balise apparaît dans le HTML mais le JavaScript ne s’exécute pas : Exemple injecté : '</h1><script>alert(0)</script> — la balise est visible mais bloquée par la CSP.

La CSP autorise uniquement les scripts provenant du même domaine ('self').

  • Le rapport CSP indique qu’un token est attendu (le paramètre token apparaît lié au comportement de la CSP).

  • En ajoutant &token=test dans l’URL, ce paramètre est interprété par l’application.

Il est possible d’injecter directement une directive CSP via le paramètre token, par exemple :

la directive est prise en compte

Après avoir forcé l’ajout de script-src-elem 'unsafe-inline', l’injection suivante permet l’exécution JavaScript :

Mis à jour

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