← Каталог / nodejs / Auth Bypass Сервер подписывает JWT слабым секретом из словаря. Получив один валидный токен, атакующий за секунды подбирает секрет по словарю офлайн, подписывает новый токен с role=admin и забирает флаг.
mediumnodejsPro
Задача
# JWT: слабый секрет подписи
## Сценарий
Перед вами Express-приложение интернет-магазина SecureShop на Node.js. Аутентификация построена на JWT-токенах — после входа сервер выдаёт клиенту подписанный токен, и дальнейшие запросы авторизуются по нему. В отличие от лабораторной с атакой на алгоритм подписи, здесь сервер корректно настраивает алгоритм и проверяет подпись «как положено». Уязвимость спрятана в другом месте — в качестве самого секрета подписи.
Ваша задача — обнаружить эту слабость и использовать её для повышения привилегий до администратора, не зная пароля admin-аккаунта.
## Цели
1. Авторизуйтесь как `demo` / `demo` и изучите токен, который сервер сохраняет в cookie клиента.
2. Декодируйте структуру токена и определите, какой алгоритм используется для подписи и что лежит в полезной нагрузке.
3. Найдите способ создать токен, который сервер примет как валидный и который даст административные привилегии.
4. Откройте админ-панель и извлеките CTF-флаг.
## Данные
| Параметр | Значение |
|----------|----------|
| Обычный пользователь | `demo` / `demo` |
| Цель | `admin`-роль (пароль администратора неизвестен) |
Похожие лабораторные
Ещё лабораторные по этому типу уязвимости
Регистрация принимает любой пароль без проверки сложности. Пароль администратора — 'admin'.
nodejseasyPro
Exploit Fix
Форма входа Express-приложения не ограничивает количество попыток, позволяя подобрать пароль администратора перебором по словарю.
nodejsmediumPro
Exploit Fix
Обработчик входа раскрывает существование пользователей через разницу во времени ответа — bcrypt вызывается только для существующих аккаунтов.
nodejsmediumPro
Exploit Fix
Сервер принимает JWT с alg:none и доверяет роли из claims — подделайте токен для получения прав администратора в SecureShop.
nodejsmediumPro
Exploit Fix
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы —
support@hackandfix.ru