Методичка для пентестеров — от PKCE и Device Flow до JWK и refresh-токенов.

Если вы тестируете современные веб-приложения, то знаете, что «взлом логина» давно перестал быть игрой в подбор паролей. Сегодня авторизация — это протоколы, редиректы, токены, подписи и тонкие согласования между клиентом, провайдером идентификации и API. Хорошая новость: всё это отлично ложится на инструментарий Burp Suite. В этой статье — живые методички для пентестеров и охотников за баунти: от перехвата потоков авторизации до классики с JWT и кейсов угонов сессий.
Запросите лишние области (scope) или иную аудиторию (audience/resource) и проверьте, что провайдер не выдал доступ сверх необходимого. Сравните полученные токены для разных клиентов, иногда «универсальные» разрешения проскакивают из-за нестрогих политик.
Редиректы: белый список обратных адресов должен требовать точное совпадение схемы, хоста, порта и пути. Поддомены, маски и http в списке — предупредительный звонок. Попробуйте внедрить открытый редирект на стороне приложения и направить токен через него.
State: это защита от CSRF в авторизации. Проверьте, что параметр присутствует, меняется для каждой попытки и что сервер тщательно его валидирует. Попробуйте повторить state или применить его в другом потоке. Если принимается любое значение — это практически обход.
Соберите «цепочку» запросов и воспроизводите поток авторизации вручную. Лучшая практика — работать с «замороженными» параметрами, меняя по одному, чтобы наглядно видеть эффект. Запланируйте минимум:
state в /authorizeredirect_uri (другой путь, поддомен, схема)code_challenge_method=plain и невалидный code_verifiercode на /token
Используйте для подбора коротких user_code в Device Flow (если видите слабую длину), для теста предсказуемых state или для попыток «угадывания» code_verifier, если он подозрительно короткий. Ограничьте частоту, чтобы не положить стенд и не вызвать блокировки. Для сложных сценариев — репозиторий Turbo Intruder с примерами скриптов.
Специально ломайте то, что «должно быть сломано»: удаляйте обязательные поля, меняйте порядок параметров, дублируйте их, отправляйте мусор вместо токенов. На стороне приложения проверяйте защиту от CSRF на страницах, принимающих результат авторизации: совпадает ли источник, проверяется ли state, нет ли скрытых автоматических сабмитов без дополнительных гарантий.
Видит и редактирует заголовки и полезные данные, помогает пересчитать подписи (где это уместно), подменить алгоритм, внести «ядовитый» kid, добавить jku/x5u. Удобно быстро циклировать варианты через Repeater. Смотрите также заметку в документации Burp: Working with JWTs.
Идеальны для массовой проверки полномочий: создайте профили для разных ролей и токенов, прогоните типовые запросы. Если API не отличает «пользователь» от «администратор» при смене токена — найдено нарушение модели доступа. Помогут руководства и примеры: репозиторий AuthMatrix, гайд по Autorize.
Подробный журнал запросов с фильтрами и пометками: удобно ловить странные редиректы, гонки при обмене code и совпадения токенов в неожиданных местах. Сохранённые фильтры сэкономят часы. Для базового логирования достаточно встроенного Burp Logger.
Незаменим при проверке внешних обращений: если бэкенд тянет ваши ключи по jku, вы это увидите в журнале коллаборатора. Так фиксируются SSRF и вовсе критичные цепочки доверия к внешним JWK-наборам. Практикуйтесь на лабе: JWT bypass via jku injection.
redirect_uri (схема, хост, порт, путь)state и (для OIDC) noncecode_challenge_method=S256, разумная длина code_verifiercode, привязка к client_id и сессииuser_codeverification_uri_completealg:none и смешения RS256↔HS256kid, отсутствие инъекций и обходовjku/x5u или строгий список доверенныхiss, aud, azp, сроков и скоса часовrefresh_token и отзыв при выходеСоберите минимальный воспроизводимый сценарий: шаги в Burp, скрин логов из Logger++, примеры запросов/ответов, ограничения и влияние. Важно отделять аутентификацию от авторизации в описании и показывать, какие данные и действия стали доступны. Если уязвимость требует сложной цепочки, разложите её на части и подтвердите каждую скрином или логом.
Современные SSO-схемы сложны не только для разработчиков, но и для атакующих. Это хорошая новость: строгая реализация стандартов и аккуратная интеграция сильно повышают порог. Ваша задача как тестировщика — методично проверять каждую «слабую» точку потока: редиректы, состояние, обмен кодов, подписи и сроки, хранение и смешение токенов. Burp Suite и правильный набор расширений позволяют сделать это быстро и наглядно. Удачных находок и аккуратных отчётов!