JWT: None Algorithm Attack
Сервер принимает JWT с alg:none и доверяет роли из claims — подделайте токен для получения прав администратора.
mediumpythonPro
Задача
# JWT: атака на алгоритм подписи
## Сценарий
Перед вами Flask-приложение интернет-магазина SecureShop. В отличие от классической схемы с серверными сессиями, аутентификация в этом приложении построена на JWT-токенах: после успешного входа сервер выдаёт клиенту подписанный токен, и дальнейшие запросы авторизуются именно по нему.
Токен виден в cookie клиента и в общих чертах построен по стандарту: заголовок, полезная нагрузка, подпись. Однако в реализации проверки токена на стороне сервера допущена ошибка, относящаяся к одной из самых известных категорий проблем JWT-аутентификации. Найдите её и используйте, чтобы получить административный доступ, не зная серверного секрета подписи.
## Цели
1. Авторизуйтесь как `demo` / `demo` и изучите cookie с токеном в DevTools.
2. Декодируйте структуру токена (заголовок и полезную нагрузку — это base64url-encoded JSON) и определите, как именно сервер интерпретирует поля токена.
3. Сформируйте поддельный токен, который пройдёт проверку на сервере и предоставит права администратора.
4. Откройте админ-панель и извлеките CTF-флаг.
## Данные
| Параметр | Значение |
|----------|----------|
| Обычный пользователь | `demo` / `demo` |
| Цель | `admin`-роль (пароль администратора неизвестен) |