DOM XSS
Вразливості DOM
Вразливості DOM виникають, коли дані з джерел, під контролем атакувальника (наприклад, location.search
, document.referrer
або document.cookie
), небезпечно передаються до стоків. Стоки - це функції або об'єкти (наприклад, eval()
, document.body.innerHTML
), які можуть виконувати або відображати шкідливий вміст, якщо їм надають зловмисні дані.
Джерела - це вхідні дані, які можуть бути маніпульовані зловмисниками, включаючи URL-адреси, cookies та веб-повідомлення.
Стоки - це потенційно небезпечні кінцеві точки, де зловмисні дані можуть призвести до негативних наслідків, таких як виконання скриптів.
Ризик виникає, коли дані переходять від джерела до стоку без належної перевірки або санітарії, що дозволяє атаки, такі як XSS.
Ви можете знайти більш оновлений список джерел та стоків за посиланням https://github.com/wisec/domxsswiki/wiki
Загальні джерела:
Загальні витоки:
jQuery | |||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
| |
|
|
| |
|
|
|
|
|
|
| |
|
|
| |
|
|
| |
|
| ||
|
| `` | `` |
Споживач innerHTML
не приймає елементи script
на будь-якому сучасному браузері, і події svg onload
не спрацьовуватимуть. Це означає, що вам потрібно використовувати альтернативні елементи, такі як img
або iframe
.
Цей вид XSS, ймовірно, найважче знайти, оскільки вам потрібно досліджувати код JS, переглядати, чи використовує він будь-який об'єкт, значення якого ви контролюєте, і в такому випадку перевіряти, чи є який-небудь спосіб зловживання для виконання довільного JS.
Інструменти для їх пошуку
Приклади
Відкрите перенаправлення
З: https://portswigger.net/web-security/dom-based/open-redirection
Вразливості відкритого перенаправлення в DOM виникають, коли скрипт записує дані, якими може керувати зловмисник, у споживача, здатного ініціювати навігацію між доменами.
Важливо розуміти, що виконання довільного коду, такого як javascript:alert(1)
, можливе, якщо у вас є контроль над початком URL, де відбувається перенаправлення.
Споживачі:
Маніпулювання кукі
З: https://portswigger.net/web-security/dom-based/cookie-manipulation
Уразливості, пов'язані з маніпулюванням кукі на основі DOM, виникають, коли скрипт включає дані, які можуть бути керовані зловмисником, у значення куки. Ця уразливість може призвести до непередбачуваної поведінки веб-сторінки, якщо куки використовуються на сайті. Крім того, її можна використовувати для проведення атаки фіксації сесії, якщо куки використовуються для відстеження сеансів користувача. Основний стік, пов'язаний з цією уразливістю, є:
Впровадження JavaScript
З: https://portswigger.net/web-security/dom-based/javascript-injection
Уразливості впровадження JavaScript на основі DOM створюються, коли скрипт запускає дані, які можуть бути контрольовані зловмисником, як код JavaScript.
Sinks:
Маніпулювання документ-доменом
З: https://portswigger.net/web-security/dom-based/document-domain-manipulation
Вразливості маніпулювання документ-доменом виникають, коли скрипт встановлює властивість document.domain
, використовуючи дані, якими може керувати зловмисник.
Властивість document.domain
відіграє ключову роль в забезпеченні політики однакового походження браузерами. Коли дві сторінки з різних джерел встановлюють свої document.domain
на одне значення, вони можуть взаємодіяти без обмежень. Хоча браузери накладають певні обмеження на значення, які можна призначити document.domain
, запобігаючи призначенню абсолютно неспівмірних значень фактичному походженню сторінки, існують винятки. Зазвичай браузери дозволяють використання дочірніх або батьківських доменів.
Витоки:
Отруєння URL WebSocket
З: https://portswigger.net/web-security/dom-based/websocket-url-poisoning
Отруєння URL WebSocket відбувається, коли скрипт використовує керовані дані як цільовий URL для підключення WebSocket.
Витоки:
Конструктор WebSocket
може призвести до вразливостей отруєння URL WebSocket.
Маніпулювання посиланнями
З: https://portswigger.net/web-security/dom-based/link-manipulation
Вразливості маніпулювання посиланнями на основі DOM виникають, коли скрипт записує дані, які може керувати зловмисник, в цільовий об'єкт навігації на поточній сторінці, такий як клікабельне посилання або URL відправки форми.
Маніпулювання запитом Ajax
З: https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation
Уразливості маніпулювання запитом Ajax виникають, коли скрипт записує дані, які може контролювати зловмисник, у запит Ajax, який видається за допомогою об'єкта XmlHttpRequest
.
Витоки:
Локальна маніпуляція шляхом до файлу
З: https://portswigger.net/web-security/dom-based/local-file-path-manipulation
Вразливості локальної маніпуляції шляхом до файлу виникають, коли скрипт передає дані, які може керувати зловмисник, до API обробки файлів як параметр filename
. Цю вразливість може бути використано зловмисником для створення URL-адреси, яка, якщо її відвідає інший користувач, може призвести до того, що браузер користувача відкриє або запише довільний локальний файл.
Витоки:
Клієнтський SQL-ін'єкція
З: https://portswigger.net/web-security/dom-based/client-side-sql-injection
Вразливості клієнтського SQL-ін'єкції виникають, коли скрипт включає дані, які може керувати зловмисник, в клієнтський SQL-запит небезпечним способом.
Sinks:
Маніпулювання зберіганням HTML5
З: https://portswigger.net/web-security/dom-based/html5-storage-manipulation
Вразливості маніпулювання зберіганням HTML5 виникають, коли скрипт зберігає дані, які може контролювати зловмисник, у зберіганні HTML5 веб-переглядача (localStorage
або sessionStorage
). Хоча ця дія не є вбудованою вразливістю безпеки, вона стає проблематичною, якщо додаток подальше читає збережені дані та обробляє їх небезпечним чином. Це може дозволити зловмиснику використовувати механізм зберігання для проведення інших атак на основі DOM, таких як міжсайтовий скриптінг та впровадження JavaScript.
Витоки:
Внедрення XPath
З: https://portswigger.net/web-security/dom-based/client-side-xpath-injection
Уразливості DOM-based XPath-injection виникають, коли скрипт включає дані, які може керувати зловмисник, у запит XPath.
Споживачі:
Вразливості внедрення JSON на клієнтському боці
З: https://portswigger.net/web-security/dom-based/client-side-json-injection
Вразливості внедрення JSON на стороні DOM виникають, коли скрипт включає дані, які може керувати зловмисник, в рядок, який розбирається як структура даних JSON, а потім обробляється додатком.
Sinks:
Маніпулювання веб-повідомленнями
З: https://portswigger.net/web-security/dom-based/web-message-manipulation
Вразливості веб-повідомлень виникають, коли скрипт надсилає дані, які може контролювати зловмисник, як веб-повідомлення до іншого документа всередині браузера. Приклад вразливого маніпулювання веб-повідомленнями можна знайти на Академії з безпеки веб-сайтів PortSwigger.
Витоки:
Метод postMessage()
для надсилання веб-повідомлень може призвести до вразливостей, якщо обробник подій для отримання повідомлень обробляє вхідні дані небезпечним способом.
Маніпулювання даними DOM
З: https://portswigger.net/web-security/dom-based/dom-data-manipulation
Вразливості маніпулювання даними DOM виникають, коли скрипт записує дані, які може контролювати зловмисник, в поле в межах DOM, яке використовується в межах видимого користувацького інтерфейсу або логіки на клієнтському боці. Цю вразливість може використовувати зловмисник для створення URL-адреси, яку, якщо відвідати іншому користувачеві, може змінити вигляд або поведінку користувацького інтерфейсу на клієнтському боці.
Витоки:
Відмова в обслуговуванні
З: https://portswigger.net/web-security/dom-based/denial-of-service
Уразливості DOM-обумовленої відмови в обслуговуванні виникають, коли скрипт передає дані, які може керувати зловмисник, небезпечно до проблемної API платформи. Це включає API, які, коли викликаються, можуть призвести до того, що комп'ютер користувача буде витрачати надмірні обсяги CPU або дискового простору. Такі уразливості можуть мати значні побічні ефекти, такі як обмеження функціональності веб-сайту браузером шляхом відхилення спроб зберігання даних в localStorage
або припинення роботи завантажених скриптів.
Витоки:
Dom Clobbering
pageDom ClobberingLast updated