DOM Invader

Reading time: 6 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

DOM Invader

DOM Invader est un outil de navigateur installé dans le navigateur intégré de Burp. Il aide à détecter les vulnérabilités DOM XSS en utilisant diverses sources et éviers, y compris les messages web et la pollution de prototype. L'outil est préinstallé en tant qu'extension.

DOM Invader intègre un onglet dans le panneau DevTools du navigateur permettant les actions suivantes :

  1. Identification des éviers contrôlables sur une page web pour les tests DOM XSS, fournissant des détails de contexte et de désinfection.
  2. Journalisation, édition et renvoi des messages web envoyés via la méthode postMessage() pour les tests DOM XSS. DOM Invader peut également détecter automatiquement les vulnérabilités en utilisant des messages web spécialement conçus.
  3. Détection des sources de pollution de prototype côté client et analyse des gadgets contrôlables envoyés à des éviers risqués.
  4. Identification des vulnérabilités de clobbering DOM.

Activez-le

Dans le navigateur intégré de Burp, allez dans l'extension Burp et activez-la :

Maintenant, rafraîchissez la page et dans les Dev Tools, vous trouverez l'onglet DOM Invader :

Injecter un Canary

Dans l'image précédente, vous pouvez voir un groupe aléatoire de caractères, c'est le Canary. Vous devriez maintenant commencer à l'injecter dans différentes parties du web (params, formulaires, url...) et chaque fois cliquer sur rechercher. DOM Invader vérifiera si le canary s'est terminé dans un évier intéressant qui pourrait être exploité.

De plus, les options Injecter des paramètres URL et Injecter des formulaires ouvriront automatiquement un nouvel onglet injectant le canary dans chaque paramètre URL et formulaire qu'il trouve.

Injecter un Canary vide

Si vous voulez juste trouver des éviers potentiels que la page pourrait avoir, même s'ils ne sont pas exploitables, vous pouvez chercher un canary vide.

Messages Post

DOM Invader permet de tester le DOM XSS en utilisant des messages web avec des fonctionnalités telles que :

  1. Journalisation des messages web envoyés via postMessage(), semblable à la journalisation de l'historique des requêtes/réponses HTTP de Burp Proxy.
  2. Modification et réémission de messages web pour tester manuellement le DOM XSS, similaire à la fonction de Burp Repeater.
  3. Altération automatique et envoi de messages web pour sonder le DOM XSS.

Détails du message

Des informations détaillées peuvent être consultées sur chaque message en cliquant dessus, y compris si le JavaScript côté client accède aux propriétés origin, data ou source du message.

  • origin : Si les informations d'origine du message ne sont pas vérifiées, vous pourriez être en mesure d'envoyer des messages cross-origin au gestionnaire d'événements depuis un domaine externe arbitraire. Mais si c'est vérifié, cela pourrait encore être non sécurisé.
  • data : C'est ici que la charge utile est envoyée. Si ces données ne sont pas utilisées, l'évier est inutile.
  • source : Évalue si la propriété source, généralement référencée à un iframe, est validée au lieu de l'origine. Même si cela est vérifié, cela ne garantit pas que la validation ne peut pas être contournée.

Répondre à un message

  1. Dans la vue Messages, cliquez sur n'importe quel message pour ouvrir la boîte de dialogue des détails du message.
  2. Modifiez le champ Data selon les besoins.
  3. Cliquez sur Envoyer.

Pollution de Prototype

DOM Invader peut également rechercher des vulnérabilités de Pollution de Prototype. Tout d'abord, vous devez l'activer :

Ensuite, il recherchera des sources qui vous permettent d'ajouter des propriétés arbitraires à Object.prototype.

Si quelque chose est trouvé, un bouton Test apparaîtra pour tester la source trouvée. Cliquez dessus, un nouvel onglet apparaîtra, créez un objet dans la console et vérifiez si la testproperty existe :

javascript
let b = {}
b.testproperty

Une fois que vous avez trouvé une source, vous pouvez scanner pour un gadget :

  1. Un nouvel onglet est ouvert par DOM Invader lorsque le bouton Scan for gadgets, qui se trouve à côté de toute source de pollution de prototype identifiée dans la vue DOM, est cliqué. Le scan pour des gadgets appropriés commence alors.
  2. Pendant ce temps, dans le même onglet, l'onglet DOM Invader doit être ouvert dans le panneau DevTools. Une fois le scan terminé, tous les sinks accessibles via les gadgets identifiés sont affichés dans la vue DOM. Par exemple, une propriété de gadget nommée html étant passée au sink innerHTML est montrée dans l'exemple ci-dessous.

DOM clobbering

Dans l'image précédente, il est possible de voir que le scan de DOM clobbering peut être activé. Une fois cela fait, DOM Invader commencera à rechercher des vulnérabilités de DOM clobbering.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks