Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
jwt-key-id-injector — Простой скрипт на Python для проверки на гипотетическую уязвимость JWT. | Kitploit
Инструменты/GitHubGitHub/dariusztytko/jwt-key-id-injector
Генерация полезной нагрузкиАнализ уязвимостейВеб-безопасностьТестирование на Проникновение
GitHubdariusztytko/jwt-key-id-injector

jwt-key-id-injector

Простой скрипт на Python для проверки на гипотетическую уязвимость JWT.

Репозиторий
5195 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Инжектор идентификатора ключа JWT

Простой скрипт на Python для проверки гипотетической уязвимости JWT.

Допустим, есть приложение, которое использует JWT-токены, подписанные алгоритмом HS256. Пример токена выглядит следующим образом:

root@kitploit:~
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.zbgd5BNF1cqQ_prCEqIvBTjSxMS8bDLnJAE_wE-0Cxg

Вышеуказанный токен можно декодировать в следующие данные:

root@kitploit:~
{
  "alg": "HS256",
  "typ": "JWT"
}
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

Для вычисления подписи используется следующий секрет:

root@kitploit:~
supersecret

Для вычисления подписи используется следующий псевдокод:

root@kitploit:~
$alg = "sha256";
$data = "...";
$key = "supersecret";

hmac($alg, $data, $key);

Но что, если неожиданное поле "kid":0 будет внедрено в заголовок?

root@kitploit:~
{
  "alg": "HS256",
  "typ": "JWT",
  "kid": 0
}
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

Поле kid — это стандартный способ выбора ключа. Мое предположение: если поле kid не ожидается, возможна уязвимая реализация, которая будет обрабатывать строковое значение $key как массив:

root@kitploit:~
hmac($alg, $data, $key[kid]);

В результате значение "s" ($key[0]) будет использоваться как секрет HMAC.

Использование

Скрипт injector.py принимает исходный JWT-токен, внедряет поле "kid":0 в заголовок и генерирует токены, подписанные односимвольными секретами (коды ASCII: 32–126 [{пробел}, !, ", #, ..., x, y, z, {, |, }, ~]):

root@kitploit:~
python3 injector.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.zbgd5BNF1cqQ_prCEqIvBTjSxMS8bDLnJAE_wE-0Cxg

В результате создаются два файла: tokens.txt и tokens_meta.txt. tokens.txt содержит сгенерированные токены и может использоваться как список полезных нагрузок для Burp Intruder. Если какой-либо токен действителен (что означает, что приложение уязвимо), файл tokens_meta.txt можно использовать для проверки того, какой алгоритм и секрет использовались для генерации данного токена. Файл tokens_meta.txt содержит следующие данные:

root@kitploit:~
token1:algorithm:secret
...
token{n}:algorithm:secret

Изменения

См. CHANGELOG

Скачать инструмент