
Модульный инструмент командной строки для парсинга, создания и манипуляции JWT-токенами для хакеров
Модульный инструмент командной строки для разбора, создания и манипуляции JSON Web Token (JWT) токенами с целью тестирования безопасности.
Установите самостоятельно:
$ gem install jwtear
888888 888 888 88888888888
"88b 888 o 888 888
888 888 d8b 888 888
888 888 d888b 888 888 .d88b. 8888b. 888d888
888 888d88888b888 888 d8P Y8b "88b 888P"
888 88888P Y88888 888 88888888 .d888888 888
88P 8888P Y8888 888 Y8b. 888 888 888
888 888P Y888 888 "Y8888 "Y888888 888
.d88P v1.0.0
.d88P"
888P"
ИМЯ
jwtear - Разбирает, создаёт и управляет JWT токенами.
СИНТАКСИС
jwtear [глобальные параметры] команда [параметры команды] [аргументы...]
ГЛОБАЛЬНЫЕ ПАРАМЕТРЫ
-v, --version - Проверить текущую и последнюю версию
-h, --help - Показать это справочное сообщение
КОМАНДЫ
help - Показать список команд или справку по одной команде
bruteforce, bfs - Плагин для офлайн-брутфорса и взлома подписи токена.
jws, s - Создать JWT токен на основе подписи (JWS).
jwe, e - Создать JWT токен на основе шифрования (JWE).
parse - Разобрать JWT токен (принимает форматы JWS и JWE).
wiki, w - JWT вики для хакеров.
-h КОМАНДА$jwtear -h jws
ИМЯ
jws - Создать JWT токен на основе подписи (JWS).
СИНТАКСИС
jwtear [глобальные параметры] jws [параметры команды]
ОПИСАНИЕ
Создаёт токены JWS и JWE.
ПАРАМЕТРЫ КОМАНДЫ
-h, --header=JSON - Заголовок JWT (формат JSON). Например: {"typ":"JWT","alg":"HS256"}. Выполните 'jwtear gen -l' для списка поддерживаемых алгоритмов. (обязательно, по умолчанию: нет)
-p, --payload=JSON - Полезная нагрузка JWT (формат JSON). Например: {"login":"admin"} (обязательно, по умолчанию: нет)
-k, --key=ПАРОЛЬ|ФАЙЛ_ОТКРЫТОГО_КЛЮЧА - Ключ в виде строки пароля или файла с открытым ключом. Например: P@ssw0rd | например: public_key.pem (по умолчанию: нет)
Плагины определяются как подкоманды. Каждая подкоманда может иметь один или несколько аргументов и/или флагов.
$ jwtear parse -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.J8SS8VKlI2yV47C4BtfYukWPx_2welF34Mz7l-MNmkE
$ jwtear jws -h '{"alg":"HS256","typ":"JWT"}' -p '{"user":"admin"}' -k p@ss0rd123
$ jwtear jwe -header '{"enc":"A192GCM","typ":"JWT"}' --payload '{"user":"admin"}' --key public.pem
$ jwtear bruteforce -v -t eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjpudWxsfQ.Tr0VvdP6rVBGBGuI_luxGCOaz6BbhC6IxRTlKOW8UjM -l ~/tmp/pass.list
Чтобы добавить новый плагин, создайте новый Ruby-файл в директории plugins со следующей структурой
module JWTear
module CLI
extend GLI::App
extend JWTear::Helpers::Extensions::Print
extend JWTear::Helpers::Utils
desc "Краткое описание плагина"
long_desc "Полное описание плагина"
command [:template, :pt] do |c|
c.action do |global, options, arguments|
print_h1 "Шаблон плагина"
print_good "Привет, я шаблон."
template = TemplatePlugin.new
end
end
end
module Plugin
class TemplatePlugin
include JWTear::Helpers::Extensions::Print
include JWTear::Helpers::Utils
def initialize
check_dependencies
# ..код...
end
# ..код...
end
end
end
Вместо включения всех зависимостей для каждого плагина в jwtear, вы можете добавить эти зависимости в виде хэша в метод check_dependencies, который подключит библиотеку и выдаст вежливую ошибку пользователю с просьбой установить недостающие гемы.
Ключ хэша — имя гема для установки, значение хэша — строка для require.
deps = {'async-io' => 'async/ip'}
check_dependencies(deps)
После того как пользователь установит недостающие зависимости, check_dependencies подключит их при инициализации класса плагина.
Баг-репорты и пулл-реквесты приветствуются на GitHub по адресу https://github.com/[USERNAME]/jwtear.
git checkout -b my-new-feature)git commit -am 'Add some feature')git push origin my-new-feature)Гем доступен с открытым исходным кодом на условиях MIT License.