mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
90 lines
8.7 KiB
Markdown
90 lines
8.7 KiB
Markdown
# DOM Invader
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## DOM Invader
|
||
|
||
DOM Invader - це інструмент браузера, встановлений у вбудованому браузері Burp. Він допомагає у **виявленні вразливостей DOM XSS** за допомогою різних джерел і стоків, включаючи веб-повідомлення та забруднення прототипу. Інструмент попередньо встановлений як розширення.
|
||
|
||
DOM Invader інтегрує вкладку у панелі DevTools браузера, що дозволяє наступне:
|
||
|
||
1. **Ідентифікація контрольованих стоків** на веб-сторінці для тестування DOM XSS, надаючи контекст та деталі санітизації.
|
||
2. **Логування, редагування та повторна відправка веб-повідомлень**, надісланих за допомогою методу `postMessage()` для тестування DOM XSS. DOM Invader також може автоматично виявляти вразливості, використовуючи спеціально підготовлені веб-повідомлення.
|
||
3. Виявлення **джерел забруднення прототипу на стороні клієнта** та сканування контрольованих гаджетів, надісланих до ризикованих стоків.
|
||
4. Ідентифікація **вразливостей DOM clobbering**.
|
||
|
||
### Enable It
|
||
|
||
У вбудованому браузері Burp перейдіть до **Burp extension** та увімкніть його:
|
||
|
||
<figure><img src="../../images/image (1129).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Тепер оновіть сторінку, і у **Dev Tools** ви знайдете **вкладку DOM Invader:**
|
||
|
||
<figure><img src="../../images/image (695).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
### Inject a Canary
|
||
|
||
На попередньому зображенні ви можете побачити **випадкову групу символів, це Канар**. Тепер ви повинні почати **впроваджувати** його в різні частини вебу (параметри, форми, url...) і кожного разу натискати пошук. DOM Invader перевірить, чи **канар закінчився в будь-якому цікавому стоку**, який може бути використаний.
|
||
|
||
Більше того, опції **Inject URL params** та Inject forms автоматично відкриють **нову вкладку**, **впроваджуючи** **канар** в кожен **URL** параметр та **форму**, яку вони знайдуть.
|
||
|
||
### Inject an empty 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`**: Тут надсилається корисне навантаження. Якщо ці дані не використовуються, стік марний.
|
||
- **`source`**: Оцінює, чи перевіряється властивість source, зазвичай посилаючись на iframe, замість походження. Навіть якщо це перевіряється, це не гарантує, що перевірка не може бути обійдена.
|
||
|
||
#### Reply a message
|
||
|
||
1. У перегляді **Messages** натисніть на будь-яке повідомлення, щоб відкрити діалогове вікно деталей повідомлення.
|
||
2. Відредагуйте поле **Data** за потреби.
|
||
3. Натисніть **Send**.
|
||
|
||
### Prototype Pollution
|
||
|
||
DOM Invader також може шукати **вразливості забруднення прототипу**. Спочатку вам потрібно увімкнути це:
|
||
|
||
<figure><img src="../../images/image (1026).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Потім він **шукатиме джерела**, які дозволяють вам додавати довільні властивості до **`Object.prototype`**.
|
||
|
||
Якщо щось буде знайдено, з'явиться кнопка **Test**, щоб **перевірити знайдене джерело**. Натисніть на неї, з'явиться нова вкладка, створіть об'єкт у консолі та перевірте, чи існує `testproperty`:
|
||
```javascript
|
||
let b = {}
|
||
b.testproperty
|
||
```
|
||
Якщо ви знайшли джерело, ви можете **сканувати на наявність гаджетів**:
|
||
|
||
1. Нову вкладку відкриває DOM Invader, коли натискається кнопка **Scan for gadgets**, яка знаходиться поруч з будь-яким виявленим джерелом забруднення прототипу у вигляді **DOM**. Потім починається сканування на наявність підходящих гаджетів.
|
||
2. Тим часом у тій же вкладці повинна бути відкрита вкладка **DOM Invader** в панелі DevTools. Після завершення сканування будь-які sink, доступні через виявлені гаджети, відображаються у вигляді **DOM**. Наприклад, властивість гаджета з назвою `html`, що передається в sink `innerHTML`, показана в наведеному нижче прикладі.
|
||
|
||
## DOM забруднення
|
||
|
||
На попередньому зображенні видно, що сканування на наявність DOM забруднення можна увімкнути. Після цього **DOM Invader почне шукати вразливості DOM забруднення**.
|
||
|
||
## Посилання
|
||
|
||
- [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)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|