DOM Invader

Reading time: 5 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

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 та увімкніть його:

Тепер оновіть сторінку, і у Dev Tools ви знайдете вкладку DOM Invader:

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 також може шукати вразливості забруднення прототипу. Спочатку вам потрібно увімкнути це:

Потім він шукатиме джерела, які дозволяють вам додавати довільні властивості до 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 забруднення.

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks