JWT: Weak Secret
JWT подписан слабым секретом — подберите его через brute-force и подделайте токен администратора.
easypythonPro
Задача
# JWT: слабый секрет подписи
## Сценарий
Перед вами Flask-приложение интернет-магазина SecureShop. Аутентификация построена на JWT-токенах — после входа сервер выдаёт клиенту подписанный токен, и дальнейшие запросы авторизуются по нему. В отличие от лабораторной с атакой на алгоритм подписи, здесь сервер корректно настраивает алгоритм и проверяет подпись «как положено». Уязвимость спрятана в другом месте — в качестве самого секрета подписи.
Ваша задача — обнаружить эту слабость и использовать её для повышения привилегий до администратора, не зная пароля admin-аккаунта.
## Цели
1. Авторизуйтесь как `demo` / `demo` и изучите токен, который сервер сохраняет в cookie клиента.
2. Декодируйте структуру токена и определите, какой алгоритм используется для подписи и что лежит в полезной нагрузке.
3. Найдите способ создать токен, который сервер примет как валидный и который даст административные привилегии.
4. Откройте админ-панель и извлеките CTF-флаг.
## Данные
| Параметр | Значение |
|----------|----------|
| Обычный пользователь | `demo` / `demo` |
| Цель | `admin`-роль (пароль администратора неизвестен) |