Міжсайтова підробка запитів
Ваш сесійний cookie додається навіть до запиту, якого ви не робили.
Що таке Міжсайтова підробка запитів?
Браузери додають сесійний cookie сайту до запитів, надісланих з інших сайтів, якщо цьому не перешкоджає налаштування SameSite, і міжсайтова підробка запитів існує саме в цій прогалині. Ви створите сторінку з купоном, прихована форма якої сама надсилається й виводить гроші з порталу, до якого жертва ввійшла в іншій вкладці. Потім ви отримаєте сповіщення про шахрайство, помітите виказовий заголовок Origin і виправите обробник токеном для кожної сесії та SameSite=Strict . Токен працює, бо зловмисник може надіслати міжсайтовий запит, але ніколи не прочитає відповідь.
Що ви дізнаєтесь у Міжсайтова підробка запитів
- Розпізнавайте CSRF як наслідок поєднання сесійного cookie, який браузер надсилає в міжсайтових запитах, і автентифікації лише за сесійним cookie на ендпоінтах, що змінюють стан
- Застосовуйте перевірку CSRF-токена для кожної сесії в кожному обробнику POST/PUT/DELETE, що змінює стан
- Поєднуйте перевірку токена з <code>SameSite=Strict</code> для сесійного cookie, щоб браузер навіть не додавав cookie до міжсайтових запитів: ешелонований захист на рівні додавання cookie
- Усвідомте, що політика одного походження змушує працювати CSRF-токени: зловмисники можуть НАДСИЛАТИ міжсайтові запити, але не можуть ЧИТАТИ відповіді, щоб дістати токен
- Перевіряйте кожен ендпоінт, що змінює стан (надання ролей, оновлення облікового запису, зміна пароля без поточного пароля, збереження налаштувань, виконання переказу), на ту саму ваду
Міжсайтова підробка запитів — Кроки навчання
-
Звичайний переказ
У Westmark Industrial є внутрішній портал закупівель, через який авторизують платежі постачальникам. Алісі треба сьогодні вранці зробити один невеликий переказ: $247.50 для Hartwell Logistics за звичайну доставку. Під капотом портал автентифікує кожен запит за її сесійним cookie. Увійдіть і подивіться, як працює звичайний переказ.
-
Вхід у портал
Це портал, через який Аліса авторизує платежі постачальникам. Її сесія в цій вкладці залишається активною до кінця дня.
-
Авторизуйте переказ
Надішліть $247.50 компанії Hartwell Logistics. Форма надсилає на ендпоінт переказу суму й отримувача в тілі запиту. Сесійний cookie Аліси додається автоматично, і лише він доводить, що запит належить їй.
-
Записано в журнал
Переказ з'являється в розділі «Остання активність». Сесійний cookie був чинним, тіло запиту — коректним, і портал авторизував переказ. Зверніть увагу, чого він не вимагав: у тілі не було жодного секрету, нічого, що могла б надати лише справжня форма. Сесійного cookie самого по собі було достатньо як доказу.
-
Запит, який він не може надіслати
Боб не може дістатися до рахунків Westmark Industrial. Але він знає, що ендпоінт переказів авторизує все, що надсилає браузер співробітника, який увійшов у портал, і знає, що співробітники залишаються в системі цілий день. Сам надіслати запит він не може: той має значення, лише якщо надходить з автентифікованого браузера співробітника. Тож він будує сторінку, яка надсилає запит замість нього. Усе, що бачить відвідувач, — ця весела сторінка з купоном.
-
Під сторінкою з кавою
Сторінка з кавою — підставна. Відкрийте її вихідний код і подивіться, що насправді ховається під привітним заголовком.
-
Усередині пастки
Під привітним заголовком ховається справжній пейлоад. Пройдіть його крок за кроком: прихована форма, яка в ту саму мить, коли завантажується сторінка, надсилає запит на справжній ендпоінт переказів Westmark Industrial, з даними Боба, а не відвідувача.
-
Надішліть приманку Алісі
Сторінку підготовлено. Тепер Боб оформлює її як веселий лист із купоном, надсилає на робочу адресу Аліси й чекає, що вона відкриє його, поки її сесія в порталі ще активна.
-
Лист про безкоштовну каву
Увечері, поза робочим часом, Аліса отримує веселий лист: безкоштовна кава, для отримання якої достатньо одного кліку. Лист не просить пароль. Вкладка порталу з ранку досі відкрита у фоні.
-
Придивіться уважніше
Лист не просить ні облікових даних, ні завантаження файлу. Це лише посилання на сторінку з купоном — з тих, які більшість людей пробігає очима й натискає.
Охоплення стандартів безпеки
OWASP Top 10
- A01:2025 Broken Access Control
- A01:2021 Broken Access Control
CWE
- CWE-352 Cross-Site Request Forgery (CSRF)
- CWE-1275 Sensitive Cookie with Improper SameSite Attribute
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