DOM Invader
Reading time: 7 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
DOM Invader
Το DOM Invader είναι ένα εργαλείο προγράμματος περιήγησης που είναι εγκατεστημένο στον ενσωματωμένο περιηγητή Chromium του Burp Suite. Βοηθά στην ανίχνευση DOM XSS και άλλων ευπαθειών πλευράς πελάτη (ρύπανση πρωτοτύπου, DOM clobbering, κ.λπ.) με την αυτόματη εργαλειοποίηση πηγών και στόχων JavaScript. Η επέκταση περιλαμβάνεται στο Burp και χρειάζεται μόνο να ενεργοποιηθεί.
Το DOM Invader προσθέτει μια καρτέλα στο πάνελ DevTools του προγράμματος περιήγησης που σας επιτρέπει να:
- Εντοπίσετε ελέγξιμους στόχους σε πραγματικό χρόνο, συμπεριλαμβανομένου του πλαισίου (χαρακτηριστικό, HTML, URL, JS) και της εφαρμοσμένης απολύμανσης.
- Καταγράψετε, επεξεργαστείτε και στείλτε ξανά τα
postMessage()
web-messages, ή αφήστε την επέκταση να τα μεταλλάξει αυτόματα. - Ανιχνεύσετε πηγές ρύπανσης πρωτοτύπου πλευράς πελάτη και σαρώστε για αλυσίδες gadget→sink, δημιουργώντας PoCs εν κινήσει.
- Βρείτε διανύσματα DOM clobbering (π.χ. συγκρούσεις
id
/name
που αντικαθιστούν παγκόσμιες μεταβλητές). - Ρυθμίστε τη συμπεριφορά μέσω ενός πλούσιου UI Ρυθμίσεων (προσαρμοσμένο canary, αυτόματη έγχυση, μπλοκάρισμα ανακατευθύνσεων, λίστες πηγών/στόχων, κ.λπ.).
1. Ενεργοποιήστε το
.png)
- Ανοίξτε Proxy ➜ Intercept ➜ Open Browser (ο ενσωματωμένος περιηγητής του Burp).
- Κάντε κλικ στο λογότυπο Burp Suite (πάνω δεξιά). Αν είναι κρυμμένο, κάντε πρώτα κλικ στο κομμάτι του παζλ.
- Στην καρτέλα DOM Invader, ενεργοποιήστε το Enable DOM Invader και πατήστε Reload.
- Ανοίξτε το DevTools (
F12
/ Δεξί κλικ ➜ Επιθεώρηση ) και τοποθετήστε το. Εμφανίζεται ένα νέο πάνελ DOM Invader.
Ο Burp θυμάται την κατάσταση ανά προφίλ. Απενεργοποιήστε το κάτω από Settings ➜ Tools ➜ Burp’s browser ➜ Store settings... αν απαιτείται.
2. Εγχύστε ένα Canary
Ένα canary είναι μια τυχαία συμβολοσειρά δείκτη (π.χ. xh9XKYlV
) που παρακολουθεί το DOM Invader. Μπορείτε να:
- Αντιγράψετε το και να το εγχύσετε χειροκίνητα σε παραμέτρους, φόρμες, πλαίσια Web-Socket, web-messages, κ.λπ.
- Χρησιμοποιήστε τα κουμπιά Inject URL params / Inject forms για να ανοίξετε μια νέα καρτέλα όπου το canary προσαρτάται σε κάθε κλειδί/τιμή ερωτήματος ή πεδίο φόρμας αυτόματα.
- Αναζητήστε ένα κενό canary για να αποκαλύψετε όλους τους στόχους ανεξαρτήτως εκμεταλλευσιμότητας (καλό για αναγνώριση).
Προσαρμοσμένο canary (2025+)
Ο Burp 2024.12 εισήγαγε τις ρυθμίσεις Canary (λογότυπο Burp ➜ DOM Invader ➜ Canary). Μπορείτε να:
- Τυχαία ή να ορίσετε μια προσαρμοσμένη συμβολοσειρά (χρήσιμο για δοκιμές πολλαπλών καρτελών ή όταν η προεπιλεγμένη τιμή εμφανίζεται φυσικά στη σελίδα).
- Αντιγράψτε την τιμή στο πρόχειρο.
- Οι αλλαγές απαιτούν Reload.
3. Web-messages (postMessage
)
Η υποκαρτέλα Messages καταγράφει κάθε κλήση window.postMessage()
, δείχνοντας τη χρήση origin
, source
και data
.
• Τροποποιήστε & στείλτε ξανά: κάντε διπλό κλικ σε ένα μήνυμα, επεξεργαστείτε το data
και πατήστε Send (όπως το Burp Repeater).
• Auto-fuzz: ενεργοποιήστε την Postmessage interception ➜ Auto-mutate στις ρυθμίσεις για να επιτρέψετε στο DOM Invader να δημιουργήσει payloads βασισμένα σε canary και να τα επαναπαίξει στον χειριστή.
Σύνοψη σημασίας πεδίου:
- origin – αν ο χειριστής επικυρώνει το
event.origin
. - data – τοποθεσία payload. Αν δεν χρησιμοποιείται, ο στόχος είναι ασήμαντος.
- source – επικύρωση αναφοράς iframe / παραθύρου; συχνά πιο αδύναμη από την αυστηρή επικύρωση προέλευσης.
4. Ρύπανση Πρωτοτύπου
Ενεργοποιήστε κάτω από Settings ➜ Attack types ➜ Prototype pollution.
Ροή εργασίας:
- Περιηγηθείτε – Το DOM Invader σηματοδοτεί πηγές ρύπανσης (
__proto__
,constructor
,prototype
) που βρίσκονται σε URL/ερώτημα/κατακερματισμό ή JSON web-messages. - Δοκιμάστε – κάντε κλικ στο Test για να ανοίξετε μια καρτέλα PoC όπου θα πρέπει να υπάρχει το
Object.prototype.testproperty
:
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
- Σαρώστε για gadgets – Το DOM Invader δοκιμάζει ονόματα ιδιοτήτων και παρακολουθεί αν κάποια καταλήγουν σε επικίνδυνους στόχους (π.χ.
innerHTML
). - Εκμεταλλευτείτε – όταν βρεθεί μια αλυσίδα gadget-sink, εμφανίζεται ένα κουμπί Exploit που συνδέει πηγή + gadget + sink για να ενεργοποιήσει την ειδοποίηση.
Προηγμένες ρυθμίσεις (εικονίδιο γρανάζι):
- Αφαιρέστε CSP / X-Frame-Options για να διατηρήσετε τα iframes λειτουργικά κατά τη διάρκεια της σάρωσης gadgets.
- Σαρώστε τεχνικές σε ξεχωριστά πλαίσια για να αποφύγετε την παρέμβαση
__proto__
μεconstructor
. - Απενεργοποιήστε τεχνικές μεμονωμένα για ευαίσθητες εφαρμογές.
5. DOM Clobbering
Ενεργοποιήστε Attack types ➜ DOM clobbering. Το DOM Invader παρακολουθεί δυναμικά δημιουργημένα στοιχεία των οποίων τα χαρακτηριστικά id
/name
συγκρούουν με παγκόσμιες μεταβλητές ή αντικείμενα φόρμας (<input name="location">
→ αντικαθιστά το window.location
). Δημιουργείται μια καταχώρηση όποτε ο ελεγχόμενος από τον χρήστη markup οδηγεί σε αντικατάσταση μεταβλητών.
6. Επισκόπηση Ρυθμίσεων (2025)
Το DOM Invader έχει πλέον χωριστεί σε κατηγορίες Main / Attack Types / Misc / Canary.
- Main
- Enable DOM Invader – παγκόσμια διακόπτης.
- Postmessage interception – ενεργοποιήστε/απενεργοποιήστε την καταγραφή μηνυμάτων; υποδιακόπτες για αυτόματη μετάλλαξη.
- Custom Sources/Sinks – εικονίδιο γρανάζι ➜ ενεργοποιήστε/απενεργοποιήστε συγκεκριμένους στόχους (π.χ.
eval
,setAttribute
) που μπορεί να σπάσουν την εφαρμογή.
- Attack Types
- Prototype pollution (με ρυθμίσεις ανά τεχνική).
- DOM clobbering.
- Misc
- Redirect prevention – μπλοκάρετε τις ανακατευθύνσεις πλευράς πελάτη ώστε η λίστα στόχων να μην χαθεί.
- Breakpoint before redirect – σταματήστε το JS ακριβώς πριν από την ανακατεύθυνση για επιθεώρηση της στοίβας κλήσεων.
- Inject canary into all sources – αυτόματη έγχυση canary παντού; ρυθμιζόμενη λίστα επιτρεπόμενων πηγών/παραμέτρων.
- Canary
- Προβολή / τυχαία / ορίστε προσαρμοσμένο canary; αντιγραφή στο πρόχειρο. Οι αλλαγές απαιτούν επαναφόρτωση του προγράμματος περιήγησης.
7. Συμβουλές & Καλές Πρακτικές
- Χρησιμοποιήστε διακριτό canary – αποφύγετε κοινές συμβολοσειρές όπως
test
, αλλιώς θα προκύψουν ψευδώς θετικά. - Απενεργοποιήστε βαρείς στόχους (
eval
,innerHTML
) προσωρινά αν σπάνε τη λειτουργικότητα της σελίδας κατά την πλοήγηση. - Συνδυάστε με Burp Repeater & Proxy – αναπαραγάγετε το αίτημα/απάντηση του προγράμματος περιήγησης που παρήγαγε μια ευάλωτη κατάσταση και δημιουργήστε τελικούς exploit URLs.
- Θυμηθείτε το πεδίο πλαισίου – οι πηγές/στόχοι εμφανίζονται ανά πλαίσιο περιήγησης; οι ευπάθειες μέσα σε iframes μπορεί να χρειάζονται χειροκίνητη εστίαση.
- Εξάγετε αποδείξεις – κάντε δεξί κλικ στο πάνελ DOM Invader ➜ Save screenshot για να συμπεριληφθεί σε αναφορές.
Αναφορές
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/canary
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.