Перейти к содержимому

Поиск по платформе

JWT: Weak Secret

JWT подписан слабым секретом — подберите его через brute-force и подделайте токен администратора.

Автор: Hack & Fix
Освоишь: bcrypt/argon2constant-time compareMFA
Легко+30 XP ~20 мин python
CWE-287 · A07:2021 Pro
Обложка: JWT: Weak Secret Обложка: JWT: Weak Secret
Задача
# JWT (слабый секрет подписи) ## Сценарий Вы — безопасник фриланс-команды, которую нанял «КофеТочка» — сеть кофеен с интернет-магазином кофейных зёрен и подписок. Аутентификация магазина построена на JWT-токенах, релиз почти готов, и перед запуском основатель попросил взглянуть на криптографию: на прошлой неделе в отраслевом чате разбирали взлом похожего магазина именно через токены. ## Цель 1. Войдите как обычный покупатель и изучите токен в cookie приложения. 2. Определите алгоритм подписи и оцените стойкость секрета, на котором держится вся схема. 3. Восстановите секрет и выпустите токен с административной ролью. 4. Откройте административную панель и извлеките флаг. ## Теория При симметричной подписи токенов вся схема держится на одном ключе: кто знает секрет, тот может подписать любой токен, а проверяющая сторона обязана его принять. Подпись атакуется офлайн: получив один валидный токен, атакующий локально перебирает короткие и словарные секреты, пока подпись не совпадёт. Если секрет зашит в код осмысленной строкой, перебор завершается за секунды. Вторая опора атаки — роль пользователя читается из полезной нагрузки: подделавший подпись вписывает себе любую. **Уязвимый паттерн:** ```python JWT_SECRET = '...' return pyjwt.encode(payload, JWT_SECRET, algorithm='HS256') ``` Секрет хранится в исходном коде литералом — коротким, предсказуемым и одинаковым во всех окружениях. ## Точка входа атаки Токен выдаётся в cookie `token` после входа через `POST /login` (поля `username`, `password`). Административная панель — `GET /admin`. * **Обычный покупатель:** `demo` / `demo`

Похожие лабораторные (4)

другие лабы по этой уязвимости
Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting) Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting)
Auth

Брутфорс Формы Входа (Нет Rate Limiting)

Форма входа не ограничивает количество попыток, позволяя подобрать пароль администратора перебором по словарю.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Слабая Парольная Политика Обложка лабы: Слабая Парольная Политика
Auth

Слабая Парольная Политика

Регистрация принимает любой пароль без проверки сложности. Пароль администратора — 'admin'.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Timing-атака на форму входа Обложка лабы: Timing-атака на форму входа
Auth

Timing-атака на форму входа

Обработчик входа раскрывает существование пользователей через разницу во времени ответа — bcrypt вызывается только для существующих аккаунтов.

+60 XP
Python Pro
Exploit Fix
Обложка лабы: JWT: None Algorithm Attack Обложка лабы: JWT: None Algorithm Attack
Auth

JWT: None Algorithm Attack

Сервер принимает JWT с alg:none и доверяет роли из claims — подделайте токен для получения прав администратора.

+60 XP
Python Pro
Exploit Fix