Відображений XSS
Вся атака міститься в надісланому вам посиланні.
Що таке Відображений XSS?
Відображені міжсайтові сценарії ховаються в URL-адресі. На сервері нічого не встановлюється: одне створене посилання запускає сценарій зловмисника на вашому власному джерелі всередині сеансу жертви, під час якого вона ввійшла в систему. Ви заміните пошуковий термін магазину корисним навантаженням img onerror і спостерігатимете, як його виконує заголовок результатів. Потім ви відкриваєте обробник пошуку, знаходите запит, об’єднаний у HTML-код відповіді, екрануєте його на межі рендерингу та відтворюєте те саме корисне навантаження як інертний текст. Чорний список, який шукає теги script , ніколи не бачить цього.
Що ви дізнаєтесь у Відображений XSS
- Відрізнити відображені XSS від збережених: URL-адреса є каналом доставки, і кожна жертва повинна відкрити створене зловмисником посилання
- Знайдіть точку відображення в конвеєрі відповіді URL-до HTML, прочитавши код обробника
- Застосуйте екранування HTML на межі візуалізації як основний захист, а не списки блокування WAF чи очищення введення
- Зрозумійте, чому корисне навантаження img onerror виконується навіть без тегу сценарію та чому списки блокувань, націлені на теги сценарію, не працюють
- Визнайте, що доставка виправлення нейтралізує виконання, а не доставку: фішингове посилання все ще існує
Відображений XSS — Кроки навчання
-
Знайдіть пошук магазину
Сьогодні Боб орієнтується на Vellora , онлайн-ринок із великою базою клієнтів, які ввійшли в систему. Він відкриває пошук загальнодоступного магазину, щоб побачити, як він поводиться. Вікно пошуку, яке повертає ваш запит на сторінку, є першим, що шукає зловмисник.
-
Запустіть звичайний пошук
Спочатку подивіться, як ця функція поводиться для справжнього покупця. Виконайте звичайний пошук товару. Магазин повертає відповідні елементи, а термін, який ввів Боб, повторюється всередині заголовка результатів.
-
Запит відображено
Точний термін, який шукав Боб, повертається прямо в заголовок результатів, і адресний рядок тепер містить його як параметр q . Це відображення є небезпечним, лише якщо сторінка не може уникнути значення на виході. Єдиний спосіб дізнатися це ввести символ, який браузер сприймає як розмітку.
-
Перевір, чи втікає
Боб досліджує відображення за допомогою класичного тесту: тег зображення зі зламаним джерелом і обробник onerror , який виводить нешкідливий alert(1) . Якщо сторінка не відповідає запиту, це відображається як звичайний текст у заголовку. Якщо цього не відбувається, браузер створює справжній тег і запускає сповіщення.
-
Його можна експлуатувати
Спрацював сигнал тривоги. Сторінка не виходить із запиту, тому виконується будь-яка розмітка, яку містить URL-адреса. Те, що нешкідливий alert(1) був лише підтвердженням. Справжнє корисне навантаження не відкриває діалогове вікно, воно працює тихо та викрадає файли cookie сеансу відвідувача.
-
Використовуйте зброю та фішинг
Боб замінює сповіщення на викрадача файлів cookie, який передає сеанс на його власний сервер, загортає його в пошукове посилання Vellora , щоб воно запускалося в домені надійного магазину, і ховає його за дружньою винагородою. Потім він надсилає його справжньому працівнику, чий сеанс вартий крадіжки: Алісі. Люди довіряють посиланням на магазин своєї компанії.
-
Нагорода, нізвідки
Електронний лист із винагородою потрапляє у вашу папку 'Вхідні'. Схоже, це від Vellora, а кнопка вказує на магазин, яким ви користуєтеся щодня. Нічого явно не так.
-
Вимагайте винагороду
Посилання відкриває власний магазин Vellora, тож почувається безпечним. Натисніть, щоб отримати винагороду.
-
Те, що насправді запускало посилання
Сторінка – це просто пошук Vellora, де показано пошкоджене зображення, де має бути заголовок результатів. Але параметр посилання q містив сценарій. Він запускався миттєво, коли відтворювалася сторінка, зчитував файл cookie сеансу та передавав його зловмисникові. Не було спливаючого вікна. Розбите зображення — єдиний слід.
-
Ваш сеанс зламано
Через кілька хвилин служба безпеки помітила це. Посилання, яке ви відкрили, повернуло ваш власний магазин проти вас, і тепер хтось інший тримає ваш сеанс. Викрадена сторінка все ще відкрита поруч із сповіщенням. Ви володієте цим кодом. Прочитайте попередження, а потім усуньте першопричину.
Охоплення стандартів безпеки
OWASP Top 10
- A05:2025 Injection
- A03:2021 Injection
CWE
- CWE-79 Improper Neutralization of Input During Web Page Generation
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security