mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
115 lines
12 KiB
Markdown
115 lines
12 KiB
Markdown
# 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 %}
|