Розкриття токена в URL
Токен сесії в URL — це облікові дані у файлі журналу.
Що таке Розкриття токена в URL?
Токен сесії в URL — це витік значення, яке автентифікує будь-кого, хто його має. URL потрапляють у журнали доступу сервера та CDN, в історію браузера, у сервіси попереднього перегляду посилань і в заголовок Referer , який отримують сторонні ресурси. Ви зберете чинні токени з аналітичного дампа реферерів і прочитаєте приватні документи жертви без жодного пароля. Потім перенесете токен у заголовок Set-Cookie з атрибутами HttpOnly , Secure і SameSite=Strict та анулюєте кожен токен, що вже витік, бо виправлення коду не відкликає те, що зібрали зловмисники.
Що ви дізнаєтесь у Розкриття токена в URL
- Розпізнавайте: будь-яке значення, яке зловмисник може використати повторно, щоб автентифікуватися як користувач (токен сесії, API-ключ, токен скидання пароля, параметр підписаного URL), належить до cookie або заголовка, але ніколи не до URL
- Розумійте різницю в поверхні витоку між URL (їх записують у журнали, пересилають, фіксують багато сторін) і cookie (лише канал між браузером і сервером)
- Застосовуйте для токенів сесій та рівнозначних засобів автентифікації шаблон cookie з HttpOnly + Secure + SameSite=Strict
- Анулюйте кожен токен сесії, що вже потрапив у журнали й реферери, бо виправлення коду не відкликає заднім числом токени, які зловмисники вже зібрали
- Перевіряйте кожен генератор URL (вхід за посиланням, підписані URL для спільного доступу, токени завантаження, URL для скидання пароля, колбеки OAuth) на засоби автентифікації, які слід винести з URL
Розкриття токена в URL — Кроки навчання
-
Простежте за входом
Боб придивляється до Corveil — вебзастосунку зі спільним робочим простором, у якому компанії працюють із документами. Перш ніж шукати лазівку, він хоче точно побачити, що робить застосунок, коли хтось входить в обліковий запис. Боб реєструє одноразовий обліковий запис, щоб увійти під власним іменем і простежити кожен крок. Він починає зі сторінки входу.
-
Увійдіть і перейдіть за перенаправленням
Боб входить в одноразовий обліковий запис так само, як будь-який користувач. Менеджер паролів підставляє збережені облікові дані. Corveil пускає його в систему й перенаправляє на панель робочого простору. Браузер відкриває сторінку, на яку його спрямовано.
-
Токен в адресному рядку
Боб тепер на своїй панелі, і йому впадає в око одна деталь: під час входу токен його сесії потрапив прямо в URL. Цей єдиний рядок — уся його сесія після входу. Нічого зламувати Бобові не треба. Йому потрібні лише місця, де накопичуються такі URL.
-
Зберіть журнали реферерів
Боб не надсилає Corveil жодного шкідливого запиту. Натомість він купує журнали реферерів за місяць у перепродавця аналітичних даних — постачальника, чий тег відстеження стоїть на панелі Corveil і непомітно записує повний URL реферера кожного, хто завантажує цю панель. Боб відкриває термінал поруч із браузером і шукає в цьому потоці посилання для входу на панель командою grep.
-
Повторно використайте викрадену сесію
Боб вибирає з цього потоку одну жертву, Маю Окафор, і бере її токен сесії. Він спрямовує програму API Tester («Тестер API») на API документів Corveil і передає викрадений токен у заголовку Cookie, точно так, як це робив би її браузер. Якщо сервер прийме токен, Боб читатиме приватний робочий простір Маї, так і не дізнавшись її пароля.
-
Її сесія стала його
Сервер сприйняв викрадений токен за справжній вхід і відповів. Тепер Боб читає приватні документи Маї звичайним викликом API, не маючи ні власного облікового запису, ні пароля. Те саме Боб може зробити з тисячами користувачів одночасно, і все це з журналів, які він купив. Розберіться точно, чому токен в URL набагато небезпечніший за звичайні дані в URL.
-
Перевірка знань
-
Сповіщення системи безпеки
Ви відповідаєте за сервіс входу Corveil. Уночі система виявлення позначила низку сесій, які повторно використовували з незнайомих місць, і надіслала вам результат листом. Прочитайте, що вона виявила, а потім відкрийте код.
-
Відкрийте обробник входу
Вам потрібно змінити обробник, який завершує вхід і перенаправляє користувача на його панель. Відкрийте обробник і подивіться, як він формує перенаправлення.
-
Знайдіть витік
Обробник створює нову сесію, а потім вставляє її ідентифікатор прямо в рядок запиту адреси, на яку перенаправляє. Браузер переходить за цим URL, і відтоді токен опиняється всюди, куди потрапляє адреса.
Охоплення стандартів безпеки
OWASP Top 10
- A07:2025 Authentication Failures
- A09:2025 Security Logging and Alerting Failures
- A07:2021 Identification and Authentication Failures
- A09:2021 Security Logging and Monitoring Failures
CWE
- CWE-598 Use of GET Request Method With Sensitive Query Strings
- CWE-532 Insertion of Sensitive Information into Log File
MITRE ATT&CK
- T1539 Steal Web Session Cookie
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