
Ferramenta modular de linha de comando para analisar, criar e manipular tokens JWT para hackers
Uma ferramenta modular de linha de comando para analisar, criar e manipular tokens JSON Web Token (JWT) para fins de teste de segurança.
Instale você mesmo como:
$ 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"
NOME
jwtear - Analisar, criar e manipular tokens JWT.
SINOPSE
jwtear [opções globais] comando [opções de comando] [argumentos...]
OPÇÕES GLOBAIS
-v, --version - Verificar versão atual e mais recente
-h, --help - Mostrar esta mensagem de ajuda
COMANDOS
help - Mostra uma lista de comandos ou ajuda para um comando
bruteforce, bfs - plugin para força bruta offline e quebra de assinatura de token.
jws, s - Gerar token JWT baseado em assinatura (JWS).
jwe, e - Gerar token JWT baseado em criptografia (JWE).
parse - Analisar token JWT (aceita formatos JWS e JWE).
wiki, w - Uma wiki JWT para hackers.
-h COMANDO$jwtear -h jws
NOME
jws - Gerar token JWT baseado em assinatura (JWS).
SINOPSE
jwtear [opções globais] jws [opções de comando]
DESCRIÇÃO
Gera tokens JWS e JWE.
OPÇÕES DE COMANDO
-h, --header=JSON - Cabeçalho JWT (formato JSON). ex.: {"typ":"JWT","alg":"HS256"}. Execute 'jwtear gen -l' para algoritmos suportados. (obrigatório, padrão: nenhum)
-p, --payload=JSON - Carga útil JWT (formato JSON). ex.: {"login":"admin"} (obrigatório, padrão: nenhum)
-k, --key=SENHA|ARQUIVO_CHAVE_PUBLICA - Chave como string de senha ou arquivo de chave pública. ex.: P@ssw0rd | ex.: public_key.pem (padrão: nenhum)
Plugins são definidos como subcomandos. Cada subcomando pode ter um ou mais argumentos e/ou switches.
$ 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
Para adicionar um novo plugin, crie um novo arquivo Ruby dentro do diretório plugins com a seguinte estrutura:
module JWTear
module CLI
extend GLI::App
extend JWTear::Helpers::Extensions::Print
extend JWTear::Helpers::Utils
desc "Descrição curta do plugin"
long_desc "Descrição longa do plugin"
command [:template, :pt] do |c|
c.action do |global, options, arguments|
print_h1 "Template do plugin"
print_good "Olá, sou um template."
template = TemplatePlugin.new
end
end
end
module Plugin
class TemplatePlugin
include JWTear::Helpers::Extensions::Print
include JWTear::Helpers::Utils
def initialize
check_dependencies
# ..código...
end
# ..código...
end
end
end
Em vez de incluir todas as dependências de cada plugin no jwtear, você pode adicionar essas dependências como um hash no método check_dependencies, que irá requerer a biblioteca e exibir um erro amigável ao usuário para instalar quaisquer gems faltantes.
A chave do hash é o nome da gem a ser instalada, o valor do hash é a string de require:
deps = {'async-io' => 'async/ip'}
check_dependencies(deps)
Uma vez que as dependências faltantes sejam instaladas pelo usuário, o check_dependencies as requererá assim que a classe do plugin for iniciada.
Relatórios de bugs e pull requests são bem-vindos no GitHub em https://github.com/[USERNAME]/jwtear.
git checkout -b minha-nova-funcionalidade)git commit -am 'Adiciona alguma funcionalidade')git push origin minha-nova-funcionalidade)A gem está disponível como código aberto sob os termos da Licença MIT.