DOM XSS

DOM XSS

La charge utile n'atteint jamais le serveur. Il fonctionne toujours.

Qu'est-ce que DOM XSS?

XSS basé sur DOM est le script intersite que votre serveur ne voit jamais. La charge utile se trouve dans le fragment d'URL, document.referrer ou un corps postMessage , et JavaScript côté client l'écrit dans innerHTML . Les filtres côté serveur et les pare-feu d’applications Web sont aveugles à tout cela. Vous allez emballer une charge utile img onerror dans un lien de partage pour une visionneuse de notes, l'ouvrir vous-même, tracer le flux de la source au récepteur et le corriger avec textContent afin que le navigateur crée un nœud de texte au lieu d'analyser le balisage.

Ce que vous apprendrez dans DOM XSS

DOM XSS — Étapes de la formation

  1. Ouvrez l'outil de partage de notes

    Aujourd'hui, Bob cible Tideline Federal, dont le personnel transmet des notes rapides via un outil de partage interne. Vous écrivez une note, l'outil vous remet un lien et toute personne qui ouvre le lien lit la note dans son navigateur. Bob ouvre le compositeur pour voir comment une note devient un lien.

  2. Partager une note normale

    Tout d’abord, Bob partage une note ordinaire pour voir comment l’outil crée un lien. Tout ce qu'il écrit est intégré dans le lien lui-même.

  3. La note circule dans le lien

    Il y a le lien de partage. La note entière se trouve à l’intérieur, dans la partie après le # . Lorsque quelqu'un ouvre le lien, le spectateur lit ce fragment et le restitue. Rien dans la note n'atteint le serveur de Tideline.

  4. Créer une charge utile de test

    Le spectateur dépose tout ce que contient la note dans la page au format HTML. Bob écrit donc une note qui n'en est pas vraiment une : une balise d'image dont la source ne peut pas se charger, portant un gestionnaire onerror . Lorsque l'image échoue, le gestionnaire s'exécute et tout code qu'il contient s'exécute dans le navigateur de celui qui ouvre le lien. Il commence par la preuve la plus simple possible, un simple alert(1) , juste pour confirmer que son code s'exécute.

  5. Testez la charge utile

    Avant d'armer quoi que ce soit, Bob prévisualise son propre lien pour vérifier que la charge utile se déclenche. L'aperçu ouvre la note exactement de la manière dont un destinataire la verrait. Au moment où le spectateur le charge, l’alerte apparaît. Son code s'exécute dans le navigateur, exactement comme prévu.

  6. Armez-le

    La preuve fonctionne, alors maintenant Bob rend la chose dangereuse. Il retourne vers le compositeur et remplace l'alerte inoffensive par une ligne qui lit le cookie de session du visiteur, le jeton qui le maintient connecté. Une vraie charge utile enverrait ce cookie à son propre serveur sans un son. Ici, la valeur volée apparaît afin que vous puissiez voir exactement ce qu'elle capture.

  7. Envoyer le lien à une victime

    Bob envoie le lien armé à Alice, une ingénieure de Tideline qui ouvre des notes partagées toute la journée. Il s'agit d'une note partagée avant sa révision matinale, elle n'a donc aucune raison d'hésiter.

  8. Une note partagée arrive

    L'e-mail de Bob est en route. Vous possédez le code de visualisation de l'outil de partage de notes et une note partagée arrive dans votre boîte de réception juste avant votre révision à 10h00. Ouvrez-le, puis ouvrez la note.

  9. Ouvrir la note partagée

    Rien ne semble bizarre, alors vous ouvrez la note comme vous en ouvrez des dizaines d’autres.

  10. La note vole votre session

    Dès l'instant où la note est chargée, cette fenêtre contextuelle s'est déclenchée dans votre navigateur et affiche votre propre cookie de session, le jeton qui vous permet de rester connecté. Vous n'avez rien cliqué et rien tapé. La note partagée contenait un script, qui lisait simplement votre session et aurait pu l'envoyer directement à un attaquant. Il s’agit d’une prise de contrôle complète du compte dès l’ouverture d’un lien.

Couverture des référentiels de sécurité

OWASP Top 10

  • A05:2025 Injection
  • A03:2021 Injection

CWE

  • CWE-79 Improper Neutralization of Input During Web Page Generation

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security