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

DOM Invader

DOM Invader - це інструмент браузера, встановлений у вбудованому браузері Chromium Burp Suite. Він допомагає у виявленні DOM XSS та інших вразливостей на стороні клієнта (забруднення прототипу, DOM clobbering тощо) шляхом автоматичного інструментування JavaScript джерел і приймачів. Розширення постачається з Burp і потребує лише активації.

DOM Invader додає вкладку до панелі DevTools браузера, яка дозволяє вам:

  1. Визначати контрольовані приймачі в реальному часі, включаючи контекст (атрибут, HTML, URL, JS) та застосовану санітизацію.
  2. Логувати, редагувати та повторно надсилати postMessage() веб-повідомлення, або дозволити розширенню автоматично їх змінювати.
  3. Виявляти джерела забруднення прототипу на стороні клієнта та сканувати ланцюги gadget→sink, генеруючи PoC на льоту.
  4. Знаходити вектори DOM clobbering (наприклад, колізії id / name, які перезаписують глобальні змінні).
  5. Тонко налаштовувати поведінку через багатий інтерфейс налаштувань (кастомний canary, автоматичне впровадження, блокування перенаправлень, списки джерел/приймачів тощо).

1. Увімкніть його

  1. Відкрийте Proxy ➜ Intercept ➜ Open Browser (вбудований браузер Burp).
  2. Натисніть на логотип Burp Suite (угорі праворуч). Якщо він прихований, спочатку натисніть на деталь.
  3. У вкладці DOM Invader увімкніть Enable DOM Invader та натисніть Reload.
  4. Відкрийте 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.

Робочий процес:

  1. Перегляд – DOM Invader позначає джерела забруднення (__proto__, constructor, prototype), знайдені в URL/запиті/хеші або JSON веб-повідомленнях.
  2. Тест – натискає Test, щоб відкрити вкладку PoC, де має існувати Object.prototype.testproperty:
javascript
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
  1. Сканувати на наявність гаджетів – DOM Invader брутфорсить імена властивостей і відстежує, чи потрапляють вони в небезпечні приймачі (наприклад, innerHTML).
  2. Експлуатувати – коли знайдено ланцюг 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.

  1. Main
  • Enable DOM Invader – глобальний перемикач.
  • Postmessage interception – увімкнути/вимкнути логування повідомлень; підперемикачі для автоматичної мутації.
  • Custom Sources/Sinksіконка шестерні ➜ увімкнути/вимкнути конкретні приймачі (наприклад, eval, setAttribute), які можуть зламати додаток.
  1. Attack Types
  • Prototype pollution (з налаштуваннями для кожної техніки).
  • DOM clobbering.
  1. Misc
  • Redirect prevention – блокувати перенаправлення на стороні клієнта, щоб список приймачів не загубився.
  • Breakpoint before redirect – призупинити JS безпосередньо перед перенаправленням для перевірки стеку викликів.
  • Inject canary into all sources – автоматично впроваджувати canary скрізь; налаштовуваний список дозволених джерел/параметрів.
  1. Canary
  • Перегляд / випадковість / встановлення кастомного canary; копіювати в буфер обміну. Зміни вимагають перезавантаження браузера.

7. Поради та хороші практики

  • Використовуйте відмінний canary – уникайте загальних рядків, таких як test, інакше виникають хибнопозитивні результати.
  • Тимчасово вимкніть важкі приймачі (eval, innerHTML), якщо вони порушують функціональність сторінки під час навігації.
  • Поєднуйте з Burp Repeater & Proxy – відтворюйте запит/відповідь браузера, які призвели до вразливого стану, і створюйте фінальні URL-адреси експлуатації.
  • Пам'ятайте про область фрейму – джерела/приймачі відображаються в кожному контексті перегляду; вразливості всередині iframe можуть вимагати ручної уваги.
  • Експортуйте докази – клацніть правою кнопкою на панелі DOM Invader ➜ Зберегти скріншот для включення в звіти.

References

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