Небезпечне перенаправлення URL-адреси

Небезпечне перенаправлення URL-адреси

Справжній домен, реальний логін, потім 302 для зловмисника.

Що таке Небезпечне перенаправлення URL-адреси?

Відкрите перенаправлення надсилає браузер до місця призначення, взятого із запиту, не запитуючи, чи є це місце призначення вашим. Програма нічого не отримує від помилки; зловмисник отримує ваше ім’я хоста, у той момент, коли користувач йому найбільше довіряє. Ви відтворите вхід, який враховує параметр next , і спостерігатимете, як 302 переносить жертву на сторінку входу, подібну до неї. Потім ви виправляєте res.redirect(req.query.next) лише за допомогою відносних шляхів або дозволеного списку імен хостів і бачите, чому startsWith('/') пропускає відносно протоколу //host безпосередньо.

Що ви дізнаєтесь у Небезпечне перенаправлення URL-адреси

Небезпечне перенаправлення URL-адреси — Кроки навчання

  1. Розмір цілі

    Сьогодні Боб шукає облікові записи Fernloft. Це персональний хмарний сервіс, тому в одному обліковому записі зберігається все чиєсь життя: фотографії, податкові записи, скановані документи, резервні копії. У нього немає нічиїх паролів, тому він планує вивчити, як працює вхід ізсередини. Fernloft дозволяє будь-кому зареєструватися, тому він починає зі сторінки реєстрації.

  2. Створіть одноразовий обліковий запис

    По-перше, йому потрібен власний обліковий запис для перевірки, який нікуди не веде до нього. Він заповнює одноразову адресу та пароль і створює їх.

  3. Прочитайте адресу для входу

    Обліковий запис створено, Боб потрапляє на сторінку входу. Перед входом він читає адресний рядок. Посилання для входу містить значення redirect_to , зараз /home , яке визначає, куди програма надсилає браузер після успішного входу.

  4. Увійдіть і спостерігайте, куди вас направляє

    Тепер Боб увійшов у свій одноразовий обліковий запис і спостерігав, куди програма надсилає браузер після прийняття пароля.

  5. Створіть шкідливе посилання

    Боб відновлює те саме посилання для входу, але змінює значення redirect_to , щоб вказувати на сторінку, якою він володіє, а не на /home . Він редагує лише це одне значення в адресному рядку, щоб побачити, чи підкорятиметься програма сторонній цілі так само, як вона підкорялася /home .

  6. Відкрите перенаправлення підтверджено

    Боб входить на справжню сторінку Fernloft за допомогою свого одноразового облікового запису. Облікові дані справжні, тому вхід вдається, а потім програма зчитує створене значення redirect_to , щоб вирішити, куди відправити браузер.

  7. Озброїти посилання

    Боб загортає створене посилання для входу в повідомлення, на яке будь-хто міг би діяти: попередження про завершення сеансу. Він витягує адреси Fernloft із дампа зламу та підриває те саме посилання на всі них. Ми стежимо за одним одержувачем, Алісою.

  8. Попередження про ваш обліковий запис

    У неробочий час Аліса перевіряє свою особисту скриньку. Є повідомлення від Fernloft: її сеанс закінчився, і їй потрібно підтвердити, щоб зберегти свої файли. Вона використовує Fernloft для всього, тому втрата доступу була б справжнім головним болем.

  9. Натисніть на посилання

    Посилання вказує на account.fernloft.com, справжню адресу Fernloft, тому Аліса клацає по ньому, як і будь-хто.

  10. Справжня сторінка входу

    Посилання відкриває справжню сторінку входу Fernloft. Адресний рядок показує справжній домен через https, все виглядає правильно, і це момент, коли Аліса вирішує довіряти сторінці.

Охоплення стандартів безпеки

OWASP Top 10

  • A01:2025 Broken Access Control
  • A01:2021 Broken Access Control

CWE

  • CWE-601 URL Redirection to Untrusted Site ('Open Redirect')

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