DOM Invader
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
DOM Invader
DOM Invader - це інструмент браузера, встановлений у вбудованому браузері Chromium Burp Suite. Він допомагає у виявленні DOM XSS та інших вразливостей на стороні клієнта (забруднення прототипу, DOM clobbering тощо) шляхом автоматичного інструментування JavaScript джерел і приймачів. Розширення постачається з Burp і потребує лише активації.
DOM Invader додає вкладку до панелі DevTools браузера, яка дозволяє вам:
- Визначати контрольовані приймачі в реальному часі, включаючи контекст (атрибут, HTML, URL, JS) та застосовану санітизацію.
- Логувати, редагувати та повторно надсилати
postMessage()
веб-повідомлення, або дозволити розширенню автоматично їх змінювати. - Виявляти джерела забруднення прототипу на стороні клієнта та сканувати ланцюги gadget→sink, генеруючи PoC на льоту.
- Знаходити вектори DOM clobbering (наприклад, колізії
id
/name
, які перезаписують глобальні змінні). - Тонко налаштовувати поведінку через багатий інтерфейс налаштувань (кастомний canary, автоматичне впровадження, блокування перенаправлень, списки джерел/приймачів тощо).
1. Увімкніть його
.png)
- Відкрийте Proxy ➜ Intercept ➜ Open Browser (вбудований браузер Burp).
- Натисніть на логотип Burp Suite (угорі праворуч). Якщо він прихований, спочатку натисніть на деталь.
- У вкладці DOM Invader увімкніть Enable DOM Invader та натисніть Reload.
- Відкрийте DevTools (
F12
/ Клацніть правою кнопкою ➜ Перевірити ) і закріпіть його. З'являється нова панель DOM Invader.
Burp запам'ятовує стан для кожного профілю. Вимкніть його в Settings ➜ Tools ➜ Burp’s browser ➜ Store settings..., якщо потрібно.
2. Впровадьте Canary
Canary - це випадковий маркерний рядок (наприклад, xh9XKYlV
), який відстежує DOM Invader. Ви можете:
- Скопіювати його та вручну впровадити в параметри, форми, Web-Socket фрейми, веб-повідомлення тощо.
- Використовувати кнопки Inject URL params / Inject forms, щоб відкрити нову вкладку, де canary автоматично додається до кожного ключа/значення запиту або поля форми.
- Шукати порожній canary, щоб виявити всі приймачі незалежно від можливості експлуатації (чудово для розвідки).
Кастомний canary (2025+)
Burp 2024.12 представив Canary settings (логотип Burp ➜ DOM Invader ➜ Canary). Ви можете:
- Випадковувати або встановити кастомний рядок (корисно для тестування з кількома вкладками або коли значення за замовчуванням з'являється природно на сторінці).
- Скопіювати значення в буфер обміну.
- Зміни вимагають Reload.
3. Веб-повідомлення (postMessage
)
Підвкладка Messages записує кожен виклик window.postMessage()
, показуючи використання origin
, source
та data
.
• Змінити та повторно надіслати: двічі клацніть на повідомлення, відредагуйте data
і натисніть Send (схоже на Burp Repeater).
• Авто-фуззинг: увімкніть Postmessage interception ➜ Auto-mutate в налаштуваннях, щоб дозволити DOM Invader генерувати навантаження на основі canary та повторно надсилати їх обробнику.
Підсумок значення полів:
- origin – чи перевіряє обробник
event.origin
. - data – місце розташування навантаження. Якщо не використовується, приймач не має значення.
- source – перевірка посилання на iframe / вікно; часто слабша, ніж перевірка строгого походження.
4. Забруднення прототипу
Увімкніть у Settings ➜ Attack types ➜ Prototype pollution.
Робочий процес:
- Перегляд – DOM Invader позначає джерела забруднення (
__proto__
,constructor
,prototype
), знайдені в URL/запиті/хеші або JSON веб-повідомленнях. - Тест – натискає Test, щоб відкрити вкладку PoC, де має існувати
Object.prototype.testproperty
:
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
- Сканувати на наявність гаджетів – DOM Invader брутфорсить імена властивостей і відстежує, чи потрапляють вони в небезпечні приймачі (наприклад,
innerHTML
). - Експлуатувати – коли знайдено ланцюг gadget-sink, з'являється кнопка Exploit, яка з'єднує джерело + гаджет + приймач для виклику сповіщення.
Розширені налаштування (іконка шестерні):
- Видалити CSP / X-Frame-Options, щоб зберегти працездатність iframe під час сканування гаджетів.
- Сканувати техніки в окремих фреймах, щоб уникнути перешкод
__proto__
таconstructor
. - Вимкнути техніки окремо для крихких додатків.
5. DOM Clobbering
Увімкніть Attack types ➜ DOM clobbering. DOM Invader моніторить динамічно створені елементи, атрибути id
/name
яких колізують з глобальними змінними або об'єктами форм (<input name="location">
→ перезаписує window.location
). Запис створюється щоразу, коли контрольований користувачем розмітка призводить до заміни змінної.
6. Огляд налаштувань (2025)
DOM Invader тепер розділений на категорії Main / Attack Types / Misc / Canary.
- Main
- Enable DOM Invader – глобальний перемикач.
- Postmessage interception – увімкнути/вимкнути логування повідомлень; підперемикачі для автоматичної мутації.
- Custom Sources/Sinks – іконка шестерні ➜ увімкнути/вимкнути конкретні приймачі (наприклад,
eval
,setAttribute
), які можуть зламати додаток.
- Attack Types
- Prototype pollution (з налаштуваннями для кожної техніки).
- DOM clobbering.
- Misc
- Redirect prevention – блокувати перенаправлення на стороні клієнта, щоб список приймачів не загубився.
- Breakpoint before redirect – призупинити JS безпосередньо перед перенаправленням для перевірки стеку викликів.
- Inject canary into all sources – автоматично впроваджувати canary скрізь; налаштовуваний список дозволених джерел/параметрів.
- Canary
- Перегляд / випадковість / встановлення кастомного canary; копіювати в буфер обміну. Зміни вимагають перезавантаження браузера.
7. Поради та хороші практики
- Використовуйте відмінний canary – уникайте загальних рядків, таких як
test
, інакше виникають хибнопозитивні результати. - Тимчасово вимкніть важкі приймачі (
eval
,innerHTML
), якщо вони порушують функціональність сторінки під час навігації. - Поєднуйте з Burp Repeater & Proxy – відтворюйте запит/відповідь браузера, які призвели до вразливого стану, і створюйте фінальні URL-адреси експлуатації.
- Пам'ятайте про область фрейму – джерела/приймачі відображаються в кожному контексті перегляду; вразливості всередині iframe можуть вимагати ручної уваги.
- Експортуйте докази – клацніть правою кнопкою на панелі DOM Invader ➜ Зберегти скріншот для включення в звіти.
References
- 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/dom-xss
- 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/dom-clobbering
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/canary
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.