Chapitre 8 (suite) — XSS, CSRF & Autres Attaques Web

⏱ ~30 min autonome · ~45 min encadré

Dernier volet du chapitre web : les attaques qui ciblent le navigateur de la victime plutôt que le serveur directement, et quelques faiblesses de configuration serveur courantes.

Le XSS consiste à injecter du script malveillant (généralement JavaScript) dans une page web, exécuté ensuite dans le navigateur d'une victime qui visite cette page — contrairement à l'injection SQL, la cible finale n'est pas le serveur, mais l'utilisateur qui consulte le contenu compromis.

TypeMécanisme
RéfléchiLe script malveillant fait partie de la requête elle-même (souvent dans l'URL) et n'est jamais stocké — la victime doit cliquer sur un lien spécialement conçu pour que l'attaque s'exécute.
StockéLe script malveillant est enregistré côté serveur (dans un commentaire, un profil utilisateur) et s'exécute pour chaque visiteur qui consulte le contenu infecté — plus dangereux, puisqu'aucune action spécifique de la victime n'est nécessaire au-delà de la simple consultation.
Basé sur le DOMLa vulnérabilité existe entièrement côté client : le script manipule le DOM de la page à partir de données non validées, sans jamais transiter par le serveur dans certains cas — plus difficile à détecter avec des outils d'analyse serveur classiques.
Mémorisez ! XSS réfléchi = non stocké, nécessite un clic spécifique. XSS stocké = enregistré côté serveur, touche tout visiteur. XSS DOM = la faille existe entièrement dans le traitement côté client, parfois sans jamais toucher le serveur.

Impacts

Un XSS réussi peut voler le cookie de session vu au 8.1 (usurpation de session complète), rediriger la victime vers un site malveillant, ou défigurer visuellement le contenu affiché — la gravité varie énormément selon ce que le script injecté choisit de faire une fois exécuté.

Contre-mesures

CSRF (falsification de requête intersite)

Le CSRF exploite la confiance qu'un site accorde au navigateur d'un utilisateur déjà authentifié : une page malveillante déclenche, à l'insu de la victime, une requête vers un site où elle est connectée (transfert bancaire, changement de courriel) — le navigateur envoie automatiquement les cookies de session valides, faisant croire au serveur que la victime a elle-même initié l'action.

Scénario : Une victime, connectée à sa banque en ligne dans un onglet, visite un site malveillant dans un autre onglet. Ce site contient une image invisible dont l'URL pointe en réalité vers l'URL de transfert bancaire de la banque de la victime. Si la banque ne vérifie que la présence d'un cookie de session valide — sans jeton anti-CSRF distinct — la requête de transfert peut être exécutée à l'insu total de la victime.

Contre-mesure principale : un jeton anti-CSRF unique, généré côté serveur et inclus dans chaque formulaire légitime, que le site malveillant ne peut pas connaître ni reproduire.

Attaques sur serveurs web

Au-delà du code applicatif, le serveur web lui-même peut être mal configuré : fichiers de sauvegarde ou de configuration accessibles publiquement (rappel du Chapitre 2 sur le google dorking), répertoires listant leur contenu, ou panneaux d'administration accessibles sans restriction d'accès réseau.

Chapitre suivant → Sans-fil, Mobile & IoT/OT

1. Contrairement à l'injection SQL, quelle est la cible finale d'une attaque XSS ?

Le XSS exécute son script malveillant dans le navigateur de la victime, pas directement contre le serveur.

2. Pourquoi le XSS stocké est-il généralement plus dangereux que le XSS réfléchi ?

Le XSS stocké touche automatiquement tout visiteur du contenu infecté, sans nécessiter de clic spécifique comme le XSS réfléchi.

3. Qu'est-ce qui caractérise un XSS basé sur le DOM ?

Le XSS DOM se produit dans le traitement côté client du navigateur, ce qui le rend plus difficile à détecter côté serveur.

4. Quel attribut de cookie empêche JavaScript d'y accéder directement, limitant l'impact d'un XSS ?

L'attribut HttpOnly empêche l'accès au cookie via JavaScript, réduisant l'impact d'un vol par XSS.

5. Sur quoi repose fondamentalement une attaque CSRF ?

Le CSRF exploite le fait que le navigateur envoie automatiquement les cookies valides, sans vérifier l'origine réelle de la demande.

6. Quelle est la contre-mesure principale contre le CSRF ?

Un jeton unique que le site malveillant ne peut pas reproduire empêche la falsification de requête.

7. Que fait une politique de sécurité de contenu (CSP) ?

La CSP limite explicitement d'où peut provenir un script exécutable, réduisant l'impact d'une injection XSS réussie.

8. Pourquoi l'encodage systématique des sorties est-il une contre-mesure efficace contre le XSS ?

L'encodage empêche le navigateur d'exécuter le contenu utilisateur comme du script, neutralisant l'attaque.

9. Un fichier de configuration accessible publiquement sur un serveur web illustre quel type de faiblesse ?

L'exposition accidentelle de fichiers sensibles relève d'une mauvaise configuration serveur, pas d'une faille applicative spécifique.

10. Pourquoi le CSRF fonctionne-t-il même si la victime ne clique sur rien de suspect en apparence ?

Le navigateur inclut automatiquement les cookies valides à chaque requête vers un domaine donné, indépendamment de l'origine réelle de la demande.