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
tokenapparaît lié au comportement de la CSP).

En ajoutant
&token=testdans 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 ?