Les failles XSS

L'injection de script dans une page : XSS stockée, réfléchie, fondée sur le DOM ; ce que l'attaquant y gagne ; l'échappement à la sortie selon le contexte, la politique CSP et le cookie HttpOnly.

  • 22 cartes
  • 4 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation

Quelques cartes du deck

  • XSS : de quoi s'agit-il ?

    Voir la réponse

    Faille qui permet à un attaquant de faire exécuter son script par le navigateur d'une victime, dans le contexte d'un site légitime.

    Le script s'exécute avec l'origine du site : il lit ses cookies non protégés, son contenu, et agit au nom de la victime. La cause est un texte fourni par un tiers écrit dans la page sans échappement.

  • Que fait ce code lorsque le commentaire vaut <img src=x onerror=alert(1)> ?

    ```javascript
    document.querySelector("#commentaire").innerHTML = comment;
    `

    • Il crée une image sans source valide, dont l'erreur déclenche le script
    • Il affiche le texte de la balise tel quel, sans l'interpréter
    • Il refuse la valeur, car innerHTML ne reçoit que du texte sans balise
    • Il exécute le script seulement si la page est servie en HTTP
    Voir la réponse

    Il crée une image sans source valide, dont l'erreur déclenche le script

    innerHTML analyse la chaîne comme du HTML : la balise img est créée, le chargement de x échoue et onerror s'exécute. Un script ne s'exécute pas via innerHTML, mais les gestionnaires d'événements oui. textContent évite le problème.

  • Dans une XSS …, le script injecté est enregistré par le serveur, par exemple dans un commentaire, et touche chaque visiteur qui affiche la page.

    Voir la réponse

    Dans une XSS stockée, le script injecté est enregistré par le serveur, par exemple dans un commentaire, et touche chaque visiteur qui affiche la page.

    C'est la plus grave des trois : la victime n'a rien à cliquer de particulier, il lui suffit de consulter une page normale.

  • Échappement en sortie : de quoi s'agit-il ?

    Voir la réponse

    Transformation des caractères spéciaux d'une donnée au moment de l'écrire dans une page, pour qu'ils soient lus comme du texte et non comme du code.

    Il se fait à la sortie, au dernier moment, car la bonne transformation dépend de l'endroit où la valeur est écrite : texte HTML, attribut, URL ou script.

  • Une alerte apparaît chez tous les visiteurs d'un forum après qu'un message a été posté. En ouvrant le HTML, on voit le message écrit tel quel, avec ses balises. Quelle réparation convient ?

    • Interdire les messages de plus de 200 caractères pour limiter le script
    • Passer le forum en HTTPS pour que le message soit chiffré en route
    • Vider le cache du navigateur de chaque visiteur
    • Échapper le message à l'affichage, et ajouter une CSP en renfort
    Voir la réponse

    Échapper le message à l'affichage, et ajouter une CSP en renfort

    C'est une XSS stockée : le message dangereux est dans la base et chacun le reçoit. HTTPS protège le trajet, pas le contenu d'une page ; une limite de longueur n'empêche pas un script court. L'échappement à la sortie ferme la faille.