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