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

115 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DOM Invader
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## DOM Invader
Το DOM Invader είναι ένα εργαλείο προγράμματος περιήγησης που είναι εγκατεστημένο στον ενσωματωμένο περιηγητή του Burp. Βοηθά στην **ανίχνευση ευπαθειών DOM XSS** χρησιμοποιώντας διάφορες πηγές και καταβυθίσεις, συμπεριλαμβανομένων των διαδικτυακών μηνυμάτων και της ρύθμισης πρωτοτύπων. Το εργαλείο είναι προεγκατεστημένο ως επέκταση.
Το DOM Invader ενσωματώνει μια καρτέλα μέσα στο πάνελ DevTools του προγράμματος περιήγησης που επιτρέπει τα εξής:
1. **Αναγνώριση ελέγξιμων καταβυθίσεων** σε μια ιστοσελίδα για δοκιμές DOM XSS, παρέχοντας λεπτομέρειες σχετικά με το πλαίσιο και την απολύμανση.
2. **Καταγραφή, επεξεργασία και επαναποστολή διαδικτυακών μηνυμάτων** που αποστέλλονται μέσω της μεθόδου `postMessage()` για δοκιμές DOM XSS. Το DOM Invader μπορεί επίσης να ανιχνεύσει αυτόματα ευπάθειες χρησιμοποιώντας ειδικά κατασκευασμένα διαδικτυακά μηνύματα.
3. Ανίχνευση **πηγών ρύθμισης πρωτοτύπων από την πλευρά του πελάτη** και σάρωση ελέγξιμων gadget που αποστέλλονται σε επικίνδυνες καταβυθίσεις.
4. Αναγνώριση **ευπαθειών DOM clobbering**.
### Enable It
Στον ενσωματωμένο περιηγητή του Burp, μεταβείτε στην **επέκταση Burp** και ενεργοποιήστε την:
<figure><img src="../../.gitbook/assets/image (1129).png" alt=""><figcaption></figcaption></figure>
Τώρα ανανεώστε τη σελίδα και στα **Dev Tools** θα βρείτε την **καρτέλα DOM Invader:**
<figure><img src="../../.gitbook/assets/image (695).png" alt=""><figcaption></figcaption></figure>
### Inject a Canary
Στην προηγούμενη εικόνα μπορείτε να δείτε μια **τυχαία ομάδα χαρακτήρων, που είναι το Canary**. Θα πρέπει τώρα να αρχίσετε να **εισάγετε** το Canary σε διάφορα μέρη του ιστού (params, forms, url...) και κάθε φορά να κάνετε κλικ στην αναζήτηση. Το DOM Invader θα ελέγξει αν το **canary κατέληξε σε οποιαδήποτε ενδιαφέρουσα καταβύθιση** που θα μπορούσε να εκμεταλλευτεί.
Επιπλέον, οι επιλογές **Inject URL params** και **Inject forms** θα ανοίξουν αυτόματα μια **νέα καρτέλα** **εισάγοντας** το **canary** σε κάθε **παράμετρο URL** και **φόρμα** που βρίσκει.
### Inject an empty Canary
Αν θέλετε απλώς να βρείτε πιθανές καταβυθίσεις που μπορεί να έχει η σελίδα, ακόμη και αν δεν είναι εκμεταλλεύσιμες, μπορείτε να **αναζητήσετε ένα κενό canary**.
### Post Messages
Το DOM Invader επιτρέπει τη δοκιμή για DOM XSS χρησιμοποιώντας διαδικτυακά μηνύματα με δυνατότητες όπως:
1. **Καταγραφή διαδικτυακών μηνυμάτων** που αποστέλλονται μέσω `postMessage()`, παρόμοια με την καταγραφή ιστορικού αιτημάτων/απαντήσεων HTTP του Burp Proxy.
2. **Τροποποίηση** και **επανέκδοση** διαδικτυακών μηνυμάτων για χειροκίνητη δοκιμή DOM XSS, παρόμοια με τη λειτουργία του Burp Repeater.
3. **Αυτόματη τροποποίηση** και αποστολή διαδικτυακών μηνυμάτων για έλεγχο DOM XSS.
#### Message details
Λεπτομερείς πληροφορίες μπορούν να προβληθούν για κάθε μήνυμα κάνοντας κλικ σε αυτό, οι οποίες περιλαμβάνουν αν η JavaScript από την πλευρά του πελάτη έχει πρόσβαση στις ιδιότητες `origin`, `data` ή `source` του μηνύματος.
* **`origin`** : Αν οι **πληροφορίες προέλευσης του μηνύματος δεν ελέγχονται**, μπορεί να είστε σε θέση να στείλετε διασυνοριακά μηνύματα στον χειριστή γεγονότων **από μια αυθαίρετη εξωτερική τοποθεσία**. Αλλά αν ελέγχεται, μπορεί να είναι ακόμα ανασφαλές.
* **`data`**: Εδώ είναι όπου αποστέλλεται το payload. Αν αυτά τα δεδομένα δεν χρησιμοποιούνται, η καταβύθιση είναι άχρηστη.
* **`source`**: Αξιολογεί αν η ιδιότητα source, που συνήθως αναφέρεται σε iframe, επικυρώνεται αντί για την προέλευση. Ακόμα και αν αυτό ελέγχεται, δεν διασφαλίζει ότι η επικύρωση δεν μπορεί να παρακαμφθεί.
#### Reply a message
1. Από την προβολή **Messages**, κάντε κλικ σε οποιοδήποτε μήνυμα για να ανοίξετε το παράθυρο λεπτομερειών του μηνύματος.
2. Επεξεργαστείτε το πεδίο **Data** όπως απαιτείται.
3. Κάντε κλικ στο **Send**.
### Prototype Pollution
Το DOM Invader μπορεί επίσης να αναζητήσει **ευπάθειες ρύθμισης πρωτοτύπων**. Πρώτα, πρέπει να το ενεργοποιήσετε:
<figure><img src="../../.gitbook/assets/image (1026).png" alt=""><figcaption></figcaption></figure>
Στη συνέχεια, θα **αναζητήσει πηγές** που σας επιτρέπουν να προσθέσετε αυθαίρετες ιδιότητες στο **`Object.prototype`**.
Αν βρεθεί κάτι, θα εμφανιστεί ένα κουμπί **Test** για να **δοκιμάσετε την ανευρεθείσα πηγή**. Κάντε κλικ σε αυτό, θα εμφανιστεί μια νέα καρτέλα, δημιουργήστε ένα αντικείμενο στην κονσόλα και ελέγξτε αν η `testproperty` υπάρχει:
```javascript
let b = {}
b.testproperty
```
Μόλις βρείτε μια πηγή μπορείτε να **σκανάρετε για gadget**:
1. Ένας νέος πίνακας ανοίγει από το DOM Invader όταν το κουμπί **Scan for gadgets**, το οποίο μπορεί να βρεθεί δίπλα σε οποιαδήποτε αναγνωρισμένη πηγή πρωτοτύπου ρύπανσης στην προβολή **DOM**, πατηθεί. Η σάρωση για κατάλληλα gadgets ξεκινά.
2. Εν τω μεταξύ, στην ίδια καρτέλα, η καρτέλα **DOM Invader** θα πρέπει να είναι ανοιχτή στο πάνελ DevTools. Αφού ολοκληρωθεί η σάρωση, οποιοιδήποτε αποδέκτες προσβάσιμοι μέσω των αναγνωρισμένων gadgets εμφανίζονται στην προβολή **DOM**. Για παράδειγμα, μια ιδιότητα gadget με όνομα `html` που μεταφέρεται στον αποδέκτη `innerHTML` εμφανίζεται στο παρακάτω παράδειγμα.
## DOM clobbering
Στην προηγούμενη εικόνα είναι δυνατό να δείτε ότι η σάρωση DOM clobbering μπορεί να ενεργοποιηθεί. Μόλις γίνει αυτό, **το DOM Invader θα αρχίσει να αναζητά ευπάθειες DOM clobbering**.
## Αναφορές
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](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/enabling)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss](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/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)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}