Типи XSS (міжсайтового скриптингу)

Міжсайтовий скриптинг (XSS) – вразливість, коли зловмисник змушує браузер цілі виконати шкідливий скрипт. Наслідки можуть включати викрадення cookie сесії та видавання себе за користувача. Також XSS може комбінуватися з соціальною інженерією для ескалації до більш руйнівних атак, як-от викрадення конфіденційних даних.

Типи XSS (загальноприйнята класифікація):

Stored/Persistent (збережений) XSS

Що це:

Найбільш небезпечний тип міжсайтового скриптингу.

Для його реалізації злочинець впроваджує шкідливий вміст (який називається корисним навантаженням), найчастіше код JavaScript, у вебсайт. Якщо перевірка вхідних даних відсутня, цей зловмисний код зберігається вебдодатком, наприклад, у базі даних.

Можливий сценарій:

Зловмисник може впровадити шкідливий скрипт у поле для вхідних даних, наприклад, у коментар у блозі.

Коли юзер відкриває вражену сторінку, корисне навантаження XSS передається до його браузера як частина HTML-коду (як легітимний коментар), і тоді виконується зловмисний скрипт.

Reflected/Non-persistent XSS (відображений) XSS

Що це:

У цьому випадку корисне навантаження зловмисника має бути частиною запиту, який надсилається на вебсервер. Потім воно відображається назад таким чином, щоб HTTP-відповідь містила корисне навантаження з HTTP-запиту.

Відображений XSS не зберігається, тому зловмиснику потрібно впровадити корисне навантаження для кожного юзера окремо.

Можливий сценарій:

Зловмисник надсилає фішинговий електронний лист зі шкідливим посиланням, щоб заманити ціль до надсилання запиту до сервера, після чого XSS виконується у її браузері.

DOM-based XSS (XSS на основі DOM)

Що це:

Це просунута XSS-атака, яка можлива до реалізації, якщо скрипти на стороні клієнта записують дані, надані користувачем, до моделі об’єктів документів (DOM). Після цього дані з DOM зчитуються вебсайтом та виводяться в браузер.

Якщо вони обробляються неправильно, зловмисник може впровадити корисне навантаження, яке буде збережено як частина DOM, та виконано, коли дані будуть зчитуватися з DOM.

Атака XSS на основі DOM часто є атакою на стороні клієнта, тому шкідливе корисне навантаження не надсилається на сервер. Це ще більше ускладнює її виявлення для брандмауерів вебзастосунків (WAF) та інженерів безпеки, які аналізують логи сервера, оскільки вони навіть не побачать атаку.

Об’єкти DOM, якими найчастіше маніпулюють, включають URL-адресу (document.URL), частину URL-адреси якоря (location.hash) та Referrer (document.referrer).

Можливий сценарій:

Зловмисник розміщує шкідливе посилання з компрометованим URL на сторонньому ресурсі та робить SMS-розсилку з ним різним номерам. Ціль заходить туди, клієнтський скрипт читає URL і вставляє вміст у DOM, після чого виконується зловмисний код.

Щодо запобігання XSS, у нас є стаття, з якою ви можете ознайомитися.

Виявлення XSS

Як це робить DAST (black-box тестування):

Динамічне тестування безпеки додатків (як-от Invicti на основі Netsparker та Acunetix) збирає структуру сайту під час його виконання, знаходячи форми введення та інші точки входу. Далі він впроваджує безпечні корисні навантаження, що імітують дії хакера, таким чином перевіряючи, чи присутня дана вразливість.

Як це робить SAST (white-box тестування):

Статичне тестування безпеки додатків (наприклад, від Mend.io) перевіряє вихідний код вебзастосунку, шукаючи там помилки, які ймовірно свідчать про наявність вразливості, грубо кажучи, як у тексті.

Найкраща практика – комбінація методів

Хорошим вибором є поєднання даних практик, адже вони не є взаємозамінними.

По-перше, SAST не може виявити вразливості, які присутні тільки під час виконання сайту, як DAST, що зменшує його охоплення; також цей метод вважається менш точним.

По-друге, за допомогою DAST не можна просканувати всю базу коду; тестується тільки запущений вебдодаток, що унеможливлює впровадження цього методу в ранніх стадіях розробки (але можна імплементувати пізніше).

Таким чином найкраще комбінувати дані техніки, аби досягти максимальної ефективності.

Ви можете безкоштовно протестувати платформи Invicti (DAST, IAST) та Mend.io (SAST, SCA, безпека контейнерів), які безшовно інтегруються, для цього, будь ласка, залиште ваші дані у формі нижче:

Запит на безкоштовне тестування Invicti/Mend.io

Залиште контакти і ми з вами зв’яжемось

Підписатися на новини