90 lines
8.7 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
{{#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}}