Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

XSS (Cross-Site Scripting)

hacking

Définition

Le XSS (Cross-Site Scripting) est une vulnérabilité web référencée sous CWE-79 permettant à un attaquant d'injecter du code JavaScript malveillant dans une page web qui sera exécuté dans le navigateur d'autres utilisateurs la consultant, en profitant d'une absence de validation ou d'échappement des données affichées. On distingue trois variantes principales : le XSS réfléchi (reflected), où le script injecté est renvoyé immédiatement dans la réponse HTTP suite à une requête malveillante, souvent via un lien piégé ; le XSS stocké (stored), le plus dangereux, où le script est persisté côté serveur (commentaire, profil utilisateur) et s'exécute pour chaque visiteur consultant le contenu ; et le XSS DOM-based, où la faille réside entièrement côté client dans la manipulation du DOM par du JavaScript existant, sans transiter par le serveur. L'exploitation permet le vol de cookies de session et de jetons d'authentification, le keylogging via des scripts capturant les frappes clavier, la redirection vers des sites de phishing, ou la défiguration de pages. Classé de manière constante dans le Top 10 OWASP, le XSS se prévient par l'échappement systématique des sorties (output encoding), l'usage d'une Content Security Policy restrictive limitant les sources de scripts exécutables, et l'attribut HttpOnly sur les cookies sensibles pour empêcher leur lecture par JavaScript.

Impossible d'écrire un fichier ou de lancer un script ici (permissions non accordées), donc le comptage a été fait à la main — le bloc ci-dessous vise ~2 400 caractères.

Principe de fonctionnement

Le XSS naît d'une rupture de frontière entre données et code : une entrée contrôlée par l'attaquant est réinjectée dans un flux HTML, un attribut ou une chaîne JavaScript sans encodage adapté au contexte de sortie. Le navigateur l'exécute dans l'origine de la victime, avec ses cookies et ses privilèges. Côté client, la chaîne source-sink décide de tout : une source comme location.hash aboutissant à un sink comme innerHTML ou eval suffit à déclencher l'exécution sans aller-retour serveur.

Utilisation en attaque

L'exploitation dépasse le classique alert(1) de démonstration : vol de jeton de session (session hijacking), keylogging par écoute des événements clavier, exfiltration du DOM vers un serveur tiers, phishing par réécriture du formulaire de connexion, ou contournement des protections CSRF — le script lit le jeton anti-rejeu puis émet une requête authentifiée. Un service worker injecté rend ensuite l'emprise persistante.

Outils associés

  • Burp Suite : scanner actif et DOM Invader pour tracer les flux source-sink (fiche)
  • XSStrike, Dalfox : fuzzing contextuel et génération de charges adaptées au point d'injection
  • BeEF : hooking de navigateur et post-exploitation client
  • Semgrep, CodeQL : détection statique des sinks dangereux

Détection et indicateurs

Surveillez les rapports report-uri de la politique de sécurité de contenu, les paramètres portant des séquences encodées à plusieurs niveaux et les résolutions DNS vers des domaines de collecte. Un même jeton de session utilisé depuis des adresses IP distinctes trahit un vol de cookie réussi. Le WAF ne donne qu'un signal partiel : mutation, casse alternée et entités HTML le contournent trivialement.

Contre-mesures

L'encodage se choisit selon le contexte de rendu, jamais globalement. Complétez par une CSP à base de nonces — unsafe-inline en annule tout le bénéfice —, par les Trusted Types pour verrouiller les sinks DOM et par une sanitisation confiée à une bibliothèque éprouvée. HttpOnly et SameSite limitent le vol de session sans neutraliser le keylogging. Méfiez-vous enfin des échappatoires d'auto-échappement des frameworks, systématiquement pointées par l'OWASP.

Contraintes respectées : aucune redite avec la section « Types de XSS » existante, uniquement les balises autorisées, six liens internes en kebab-case. Si tu veux un comptage exact, autorise l'écriture dans `/tmp` ou l'exécution de `python3` et je le vérifie au caractère près.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis