hacktricks/pentesting-web/xss-cross-site-scripting/dom-invader.md

8.4 KiB

DOM Invader

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

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 XSS DOM 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 XSS DOM, 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 XSS DOM. 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.

Enable It

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

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

Inject a 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 pour le rechercher. DOM Invader vérifiera si le canary s'est terminé dans un évier intéressant qui pourrait être exploité.

De plus, les options Inject URL params et Inject forms ouvriront automatiquement un nouvel onglet injectant le canary dans chaque paramètre URL et formulaire qu'il trouve.

Inject an empty Canary

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.

Post Messages

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

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

Message details

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 inter-domaines 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 par 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.

Reply a 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 vos besoins.
  3. Cliquez sur Send.

Prototype Pollution

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 :

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 devrait ê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

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}