diff --git a/src/pentesting-web/xss-cross-site-scripting/dom-invader.md b/src/pentesting-web/xss-cross-site-scripting/dom-invader.md
index f79e7024f..9e80f0dc0 100644
--- a/src/pentesting-web/xss-cross-site-scripting/dom-invader.md
+++ b/src/pentesting-web/xss-cross-site-scripting/dom-invader.md
@@ -4,78 +4,125 @@
## DOM Invader
-Το DOM Invader είναι ένα εργαλείο προγράμματος περιήγησης που είναι εγκατεστημένο στον ενσωματωμένο περιηγητή του Burp. Βοηθά στην **ανίχνευση ευπαθειών DOM XSS** χρησιμοποιώντας διάφορες πηγές και καταβυθίσεις, συμπεριλαμβανομένων των διαδικτυακών μηνυμάτων και της ρύπανσης πρωτοτύπων. Το εργαλείο είναι προεγκατεστημένο ως επέκταση.
+Το DOM Invader είναι ένα εργαλείο προγράμματος περιήγησης που είναι εγκατεστημένο στον **ενσωματωμένο περιηγητή Chromium του Burp Suite**. Βοηθά στην **ανίχνευση DOM XSS και άλλων ευπαθειών πλευράς πελάτη** (ρύπανση πρωτοτύπου, DOM clobbering, κ.λπ.) με την αυτόματη **εργαλειοποίηση πηγών και στόχων JavaScript**. Η επέκταση περιλαμβάνεται στο Burp και χρειάζεται μόνο να ενεργοποιηθεί.
-Το DOM Invader ενσωματώνει μια καρτέλα μέσα στο πάνελ DevTools του προγράμματος περιήγησης που επιτρέπει τα εξής:
+Το DOM Invader προσθέτει μια καρτέλα στο πάνελ DevTools του προγράμματος περιήγησης που σας επιτρέπει να:
-1. **Αναγνώριση ελέγξιμων καταβυθίσεων** σε μια ιστοσελίδα για δοκιμές DOM XSS, παρέχοντας λεπτομέρειες σχετικά με το πλαίσιο και την απολύμανση.
-2. **Καταγραφή, επεξεργασία και επαναποστολή διαδικτυακών μηνυμάτων** που αποστέλλονται μέσω της μεθόδου `postMessage()` για δοκιμές DOM XSS. Το DOM Invader μπορεί επίσης να ανιχνεύσει αυτόματα ευπάθειες χρησιμοποιώντας ειδικά κατασκευασμένα διαδικτυακά μηνύματα.
-3. Ανίχνευση **πηγών ρύπανσης πρωτοτύπων πελάτη** και σάρωση ελέγξιμων gadget που αποστέλλονται σε επικίνδυνες καταβυθίσεις.
-4. Αναγνώριση **ευπαθειών DOM clobbering**.
+1. **Εντοπίσετε ελέγξιμους στόχους** σε πραγματικό χρόνο, συμπεριλαμβανομένου του πλαισίου (χαρακτηριστικό, HTML, URL, JS) και της εφαρμοσμένης απολύμανσης.
+2. **Καταγράψετε, επεξεργαστείτε και στείλτε ξανά τα `postMessage()` web-messages**, ή αφήστε την επέκταση να τα μεταλλάξει αυτόματα.
+3. **Ανιχνεύσετε πηγές ρύπανσης πρωτοτύπου πλευράς πελάτη και σαρώστε για αλυσίδες gadget→sink**, δημιουργώντας PoCs εν κινήσει.
+4. **Βρείτε διανύσματα DOM clobbering** (π.χ. συγκρούσεις `id` / `name` που αντικαθιστούν παγκόσμιες μεταβλητές).
+5. **Ρυθμίστε τη συμπεριφορά** μέσω ενός πλούσιου UI Ρυθμίσεων (προσαρμοσμένο canary, αυτόματη έγχυση, μπλοκάρισμα ανακατευθύνσεων, λίστες πηγών/στόχων, κ.λπ.).
-### Ενεργοποιήστε το
+---
-Στον ενσωματωμένο περιηγητή του Burp, μεταβείτε στην **επέκταση Burp** και ενεργοποιήστε το:
+### 1. Ενεργοποιήστε το
-Τώρα ανανεώστε τη σελίδα και στα **Dev Tools** θα βρείτε την **καρτέλα DOM Invader:**
+1. Ανοίξτε **Proxy ➜ Intercept ➜ Open Browser** (ο ενσωματωμένος περιηγητής του Burp).
+2. Κάντε κλικ στο λογότυπο **Burp Suite** (πάνω δεξιά). Αν είναι κρυμμένο, κάντε πρώτα κλικ στο κομμάτι του παζλ.
+3. Στην καρτέλα **DOM Invader**, ενεργοποιήστε το **Enable DOM Invader** και πατήστε **Reload**.
+4. Ανοίξτε το DevTools ( `F12` / Δεξί κλικ ➜ Επιθεώρηση ) και τοποθετήστε το. Εμφανίζεται ένα νέο πάνελ **DOM Invader**.
-
+> Ο Burp θυμάται την κατάσταση ανά προφίλ. Απενεργοποιήστε το κάτω από *Settings ➜ Tools ➜ Burp’s browser ➜ Store settings...* αν απαιτείται.
-### Εισάγετε ένα Canary
+### 2. Εγχύστε ένα Canary
-Στην προηγούμενη εικόνα μπορείτε να δείτε μια **τυχαία ομάδα χαρακτήρων, που είναι το Canary**. Πρέπει τώρα να αρχίσετε να **εισάγετε** το Canary σε διάφορα μέρη του ιστού (params, forms, url...) και κάθε φορά να κάνετε κλικ στην αναζήτηση. Το DOM Invader θα ελέγξει αν το **canary κατέληξε σε οποιαδήποτε ενδιαφέρουσα καταβύθιση** που θα μπορούσε να εκμεταλλευτεί.
+Ένα **canary** είναι μια τυχαία συμβολοσειρά δείκτη (π.χ. `xh9XKYlV`) που παρακολουθεί το DOM Invader. Μπορείτε να:
-Επιπλέον, οι επιλογές **Inject URL params** και Inject forms θα ανοίξουν αυτόματα μια **νέα καρτέλα** **εισάγοντας** το **canary** σε κάθε **παράμετρο URL** και **φόρμα** που βρίσκει.
+* **Αντιγράψετε** το και να το εγχύσετε χειροκίνητα σε παραμέτρους, φόρμες, πλαίσια Web-Socket, web-messages, κ.λπ.
+* Χρησιμοποιήστε τα κουμπιά **Inject URL params / Inject forms** για να ανοίξετε μια νέα καρτέλα όπου το canary προσαρτάται σε κάθε κλειδί/τιμή ερωτήματος ή πεδίο φόρμας αυτόματα.
+* Αναζητήστε ένα **κενό canary** για να αποκαλύψετε όλους τους στόχους ανεξαρτήτως εκμεταλλευσιμότητας (καλό για αναγνώριση).
-### Εισάγετε ένα κενό Canary
+#### Προσαρμοσμένο canary (2025+)
-Αν θέλετε απλώς να βρείτε πιθανές καταβυθίσεις που μπορεί να έχει η σελίδα, ακόμη και αν δεν είναι εκμεταλλεύσιμες, μπορείτε να **αναζητήσετε ένα κενό canary**.
+Ο Burp 2024.12 εισήγαγε τις **ρυθμίσεις Canary** (λογότυπο Burp ➜ DOM Invader ➜ Canary). Μπορείτε να:
-### Μηνύματα Post
+* **Τυχαία** ή να ορίσετε μια **προσαρμοσμένη συμβολοσειρά** (χρήσιμο για δοκιμές πολλαπλών καρτελών ή όταν η προεπιλεγμένη τιμή εμφανίζεται φυσικά στη σελίδα).
+* **Αντιγράψτε** την τιμή στο πρόχειρο.
+* Οι αλλαγές απαιτούν **Reload**.
-Το DOM Invader επιτρέπει τη δοκιμή για DOM XSS χρησιμοποιώντας διαδικτυακά μηνύματα με δυνατότητες όπως:
+---
-1. **Καταγραφή διαδικτυακών μηνυμάτων** που αποστέλλονται μέσω `postMessage()`, παρόμοια με την καταγραφή ιστορικού αιτημάτων/απαντήσεων HTTP του Burp Proxy.
-2. **Τροποποίηση** και **επανέκδοση** διαδικτυακών μηνυμάτων για χειροκίνητη δοκιμή DOM XSS, παρόμοια με τη λειτουργία του Burp Repeater.
-3. **Αυτόματη τροποποίηση** και αποστολή διαδικτυακών μηνυμάτων για έλεγχο DOM XSS.
+### 3. Web-messages (`postMessage`)
-#### Λεπτομέρειες μηνύματος
+Η υποκαρτέλα **Messages** καταγράφει κάθε κλήση `window.postMessage()`, δείχνοντας τη χρήση `origin`, `source` και `data`.
-Λεπτομερείς πληροφορίες μπορούν να προβληθούν για κάθε μήνυμα κάνοντας κλικ σε αυτό, οι οποίες περιλαμβάνουν αν η JavaScript του πελάτη έχει πρόσβαση στις ιδιότητες `origin`, `data` ή `source` του μηνύματος.
+• **Τροποποιήστε & στείλτε ξανά**: κάντε διπλό κλικ σε ένα μήνυμα, επεξεργαστείτε το `data` και πατήστε **Send** (όπως το Burp Repeater).
-- **`origin`** : Αν οι **πληροφορίες προέλευσης του μηνύματος δεν ελέγχονται**, μπορεί να είστε σε θέση να στείλετε διασυνοριακά μηνύματα στον χειριστή γεγονότων **από έναν αυθαίρετο εξωτερικό τομέα**. Αλλά αν ελέγχεται, μπορεί να είναι ακόμα ανασφαλές.
-- **`data`**: Εδώ αποστέλλεται το payload. Αν αυτά τα δεδομένα δεν χρησιμοποιούνται, η καταβύθιση είναι άχρηστη.
-- **`source`**: Αξιολογεί αν η ιδιότητα πηγής, που συνήθως αναφέρεται σε iframe, επικυρώνεται αντί για την προέλευση. Ακόμα και αν αυτό ελέγχεται, δεν διασφαλίζει ότι η επικύρωση δεν μπορεί να παρακαμφθεί.
+• **Auto-fuzz**: ενεργοποιήστε την **Postmessage interception ➜ Auto-mutate** στις ρυθμίσεις για να επιτρέψετε στο DOM Invader να δημιουργήσει payloads βασισμένα σε canary και να τα επαναπαίξει στον χειριστή.
-#### Απάντηση σε μήνυμα
+Σύνοψη σημασίας πεδίου:
-1. Από την προβολή **Μηνυμάτων**, κάντε κλικ σε οποιοδήποτε μήνυμα για να ανοίξετε το παράθυρο λεπτομερειών μηνύματος.
-2. Επεξεργαστείτε το πεδίο **Data** όπως απαιτείται.
-3. Κάντε κλικ στο **Send**.
+* **origin** – αν ο χειριστής επικυρώνει το `event.origin`.
+* **data** – τοποθεσία payload. Αν δεν χρησιμοποιείται, ο στόχος είναι ασήμαντος.
+* **source** – επικύρωση αναφοράς iframe / παραθύρου; συχνά πιο αδύναμη από την αυστηρή επικύρωση προέλευσης.
-### Ρύπανση Πρωτοτύπων
+---
-Το DOM Invader μπορεί επίσης να αναζητήσει **ευπάθειες Ρύπανσης Πρωτοτύπων**. Πρώτα, πρέπει να το ενεργοποιήσετε:
+### 4. Ρύπανση Πρωτοτύπου
-
+Ενεργοποιήστε κάτω από **Settings ➜ Attack types ➜ Prototype pollution**.
-Στη συνέχεια, θα **αναζητήσει πηγές** που σας επιτρέπουν να προσθέσετε αυθαίρετες ιδιότητες στο **`Object.prototype`**.
+Ροή εργασίας:
+
+1. **Περιηγηθείτε** – Το DOM Invader σηματοδοτεί πηγές ρύπανσης (`__proto__`, `constructor`, `prototype`) που βρίσκονται σε URL/ερώτημα/κατακερματισμό ή JSON web-messages.
+2. **Δοκιμάστε** – κάντε κλικ στο *Test* για να ανοίξετε μια καρτέλα PoC όπου θα πρέπει να υπάρχει το `Object.prototype.testproperty`:
-Αν βρεθεί κάτι, θα εμφανιστεί ένα κουμπί **Test** για να **δοκιμάσετε την βρεθείσα πηγή**. Κάντε κλικ σε αυτό, θα εμφανιστεί μια νέα καρτέλα, δημιουργήστε ένα αντικείμενο στην κονσόλα και ελέγξτε αν η `testproperty` υπάρχει:
```javascript
-let b = {}
-b.testproperty
+let obj = {};
+console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
```
-Μόλις βρείτε μια πηγή μπορείτε να **σκανάρετε για ένα gadget**:
+3. **Σαρώστε για gadgets** – Το DOM Invader δοκιμάζει ονόματα ιδιοτήτων και παρακολουθεί αν κάποια καταλήγουν σε επικίνδυνους στόχους (π.χ. `innerHTML`).
+4. **Εκμεταλλευτείτε** – όταν βρεθεί μια αλυσίδα gadget-sink, εμφανίζεται ένα κουμπί *Exploit* που συνδέει πηγή + gadget + sink για να ενεργοποιήσει την ειδοποίηση.
-1. Ένας νέος πίνακας ανοίγει από το DOM Invader όταν το κουμπί **Scan for gadgets**, το οποίο μπορεί να βρεθεί δίπλα σε οποιαδήποτε αναγνωρισμένη πηγή ρύθμισης πρωτοτύπου στην προβολή **DOM**, πατηθεί. Η σάρωση για κατάλληλα gadgets ξεκινά.
-2. Εν τω μεταξύ, στην ίδια καρτέλα, η καρτέλα **DOM Invader** θα πρέπει να είναι ανοιχτή στο πάνελ DevTools. Αφού ολοκληρωθεί η σάρωση, οποιοιδήποτε δέκτες προσβάσιμοι μέσω των αναγνωρισμένων gadgets εμφανίζονται στην προβολή **DOM**. Για παράδειγμα, μια ιδιότητα gadget με όνομα `html` που μεταφέρεται στον δέκτη `innerHTML` εμφανίζεται στο παρακάτω παράδειγμα.
+Προηγμένες ρυθμίσεις (εικονίδιο γρανάζι):
-## DOM clobbering
+* **Αφαιρέστε CSP / X-Frame-Options** για να διατηρήσετε τα iframes λειτουργικά κατά τη διάρκεια της σάρωσης gadgets.
+* **Σαρώστε τεχνικές σε ξεχωριστά πλαίσια** για να αποφύγετε την παρέμβαση `__proto__` με `constructor`.
+* **Απενεργοποιήστε τεχνικές** μεμονωμένα για ευαίσθητες εφαρμογές.
-Στην προηγούμενη εικόνα είναι δυνατό να δείτε ότι η σάρωση DOM clobbering μπορεί να ενεργοποιηθεί. Μόλις γίνει αυτό, **το DOM Invader θα αρχίσει να αναζητά ευπάθειες DOM clobbering**.
+---
+
+### 5. DOM Clobbering
+
+Ενεργοποιήστε **Attack types ➜ DOM clobbering**. Το DOM Invader παρακολουθεί δυναμικά δημιουργημένα στοιχεία των οποίων τα χαρακτηριστικά `id`/`name` συγκρούουν με παγκόσμιες μεταβλητές ή αντικείμενα φόρμας (`` → αντικαθιστά το `window.location`). Δημιουργείται μια καταχώρηση όποτε ο ελεγχόμενος από τον χρήστη markup οδηγεί σε αντικατάσταση μεταβλητών.
+
+---
+
+## 6. Επισκόπηση Ρυθμίσεων (2025)
+
+Το DOM Invader έχει πλέον χωριστεί σε κατηγορίες **Main / Attack Types / Misc / Canary**.
+
+1. **Main**
+* **Enable DOM Invader** – παγκόσμια διακόπτης.
+* **Postmessage interception** – ενεργοποιήστε/απενεργοποιήστε την καταγραφή μηνυμάτων; υποδιακόπτες για αυτόματη μετάλλαξη.
+* **Custom Sources/Sinks** – *εικονίδιο γρανάζι* ➜ ενεργοποιήστε/απενεργοποιήστε συγκεκριμένους στόχους (π.χ. `eval`, `setAttribute`) που μπορεί να σπάσουν την εφαρμογή.
+
+2. **Attack Types**
+* **Prototype pollution** (με ρυθμίσεις ανά τεχνική).
+* **DOM clobbering**.
+
+3. **Misc**
+* **Redirect prevention** – μπλοκάρετε τις ανακατευθύνσεις πλευράς πελάτη ώστε η λίστα στόχων να μην χαθεί.
+* **Breakpoint before redirect** – σταματήστε το JS ακριβώς πριν από την ανακατεύθυνση για επιθεώρηση της στοίβας κλήσεων.
+* **Inject canary into all sources** – αυτόματη έγχυση canary παντού; ρυθμιζόμενη λίστα επιτρεπόμενων πηγών/παραμέτρων.
+
+4. **Canary**
+* Προβολή / τυχαία / ορίστε προσαρμοσμένο canary; αντιγραφή στο πρόχειρο. Οι αλλαγές απαιτούν επαναφόρτωση του προγράμματος περιήγησης.
+
+---
+
+### 7. Συμβουλές & Καλές Πρακτικές
+
+* **Χρησιμοποιήστε διακριτό canary** – αποφύγετε κοινές συμβολοσειρές όπως `test`, αλλιώς θα προκύψουν ψευδώς θετικά.
+* **Απενεργοποιήστε βαρείς στόχους** (`eval`, `innerHTML`) προσωρινά αν σπάνε τη λειτουργικότητα της σελίδας κατά την πλοήγηση.
+* **Συνδυάστε με Burp Repeater & Proxy** – αναπαραγάγετε το αίτημα/απάντηση του προγράμματος περιήγησης που παρήγαγε μια ευάλωτη κατάσταση και δημιουργήστε τελικούς exploit URLs.
+* **Θυμηθείτε το πεδίο πλαισίου** – οι πηγές/στόχοι εμφανίζονται ανά πλαίσιο περιήγησης; οι ευπάθειες μέσα σε iframes μπορεί να χρειάζονται χειροκίνητη εστίαση.
+* **Εξάγετε αποδείξεις** – κάντε δεξί κλικ στο πάνελ DOM Invader ➜ *Save screenshot* για να συμπεριληφθεί σε αναφορές.
+
+---
## Αναφορές
@@ -85,5 +132,7 @@ b.testproperty
- [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages](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/prototype-pollution)
- [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering](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/canary)
+- [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc)
{{#include ../../banners/hacktricks-training.md}}