Ін'єкція заголовка хосту
Скинутий електронний лист справжній. Посилання в ньому не ваше.
Що таке Ін'єкція заголовка хосту?
Програми створюють посилання для скидання пароля із заголовка Host або X-Forwarded-Host вхідного запиту, що дозволяє запитувачу вирішувати, куди вони вказують. Ви перебудуєте запит на скидання за допомогою схожого домену в X-Forwarded-Host , дозволите програмі надіслати поштою справжній маркер за вашим посиланням і відтворите його протягом терміну служби, щоб отримати обліковий запис. Потім ви створюєте основну URL-адресу з налаштованого APP_BASE_URL , а не з даних запиту, що підтримується списком дозволених хостів на проксі. Така сама форма ховається в підписаних URL-адресах завантаження та ключах кешу.
Що ви дізнаєтесь у Ін'єкція заголовка хосту
- Розпізнати <code>req.headers.host</code> як ненадійний вхід, заголовок ідентифікує претензію запитувача про те, куди він надіслав запит, а не особу програми
- Застосуйте виправлення налаштованої константи: створюйте URL-адреси з <code>process.env.APP_BASE_URL</code> (встановлено для кожного середовища в конфігурації розгортання), а не зі значень, отриманих із запиту
- Поєднайте зі строгим списком дозволених заголовків хосту на рівні фреймворку або проксі, щоб будь-який інший сайт виклику, який все ще читає заголовок, був захищений
- Перевірте кожен сайт для створення URL-адрес (шаблони електронної пошти, підписані URL-адреси для завантаження, перенаправлення, ключі кешу, нижні колонтитули електронних листів) на наявність однакового антишаблону
- Інтерналізація: зловмисник контролює заголовки запитів, оператор контролює конфігурацію розгортання, чутливі до безпеки бази URL-адрес належать оператору цього рядка
Ін'єкція заголовка хосту — Кроки навчання
-
Використовуйте функцію скидання
Боб шукає облікові записи Verdanta. Це додаток для особистих фінансів, тож кожен обліковий запис, який він бере, пов’язаний безпосередньо з чиїмось справжнім банківським балансом. Він не знає нічиїх паролів, тому починає там, де він йому не потрібен: сторінку із забутим паролем. Спочатку він надсилає його з власною одноразовою адресою, щоб він міг точно спостерігати, який запит робить сторінка.
-
Знайдіть кінцеву точку
Запит вийшов, і браузер його зафіксував. Боб відкриває панель «Мережа», щоб прочитати, куди сторінка його насправді надіслала.
-
Прочитайте схему тіла
Один запит, і він скаже Бобу все, що йому потрібно. Він перевіряє, що сторінка розмістила в тілі запиту.
-
Підробити запит на скидання
Боб перебудовує той самий запит у API Tester, де він може додати одну річ, яку форма браузера ніколи не дозволяє йому встановити: підроблений заголовок хосту. Він просить скинути налаштування справжнього облікового запису Аліси, але повідомляє додатку, що запит надійшов на account-verdanta.app, схожий домен, який він зареєстрував і контролює (зверніть увагу на .app, де справжній сайт Verdanta — account.verdanta.com). Якщо програма створить посилання для скидання із заголовка, електронна пошта Аліси міститиме його домен і її справжній маркер.
-
Відповідь нічого не видає
API відповідає звичайним 200 і загальним повідомленням. Ніщо у відповіді не натякає на те, що щось пішло не так, саме тому ця помилка тиха. Пошкодження не у відповіді, яку бачить Боб. Він міститься в електронному листі, який зараз знаходиться в папці «Вхідні» Аліси, і містить посилання, яке починається з його домену.
-
Електронний лист для зміни пароля
У неробочий час Аліса отримує електронний лист для скидання пароля від Verdanta. Вона не просила його, але воно виглядає як справжнє: той самий відправник, те саме формулювання, той самий макет.
-
Натисніть посилання скидання
Аліса натискає посилання, щоб скинути свій пароль, як і будь-хто.
-
Подивіться на адресний рядок
Відкриється сторінка скидання. Це виглядає як Verdanta, але адресний рядок розповідає іншу історію.
-
Ловіть токен
Клацання Аліси так і не досягло Верданти. Її браузер відкрив account-verdanta.app, сервер, яким керує Боб, і в URL-адресі з’явився маркер скидання. Повернувшись на власну машину, Боб стежить за журналом доступу до цього сервера, щоб зафіксувати те, що щойно надійшло.
-
Відтворити маркер
Жетони належать Алісі, але зараз вони в руках Боба, і токенам скидання байдуже, хто їх дарує. Перед закінченням терміну дії він відтворює його проти реальної кінцевої точки та встановлює пароль на власний вибір.
Охоплення стандартів безпеки
OWASP Top 10
- A02:2025 Security Misconfiguration
- A05:2021 Security Misconfiguration
CWE
- CWE-644 Improper Neutralization of HTTP Headers for Scripting Syntax
- CWE-640 Weak Password Recovery Mechanism for Forgotten Password
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