
Strumento modulare da riga di comando per analizzare, creare e manipolare token JWT per hacker
Uno strumento modulare da riga di comando per analizzare, creare e manipolare token JSON Web Token (JWT) per scopi di test di sicurezza.
Installalo da solo come:
$ 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 - Analizza, crea e manipola token JWT.
SINTASSI
jwtear [opzioni globali] comando [opzioni del comando] [argomenti...]
OPZIONI GLOBALI
-v, --version - Controlla la versione corrente e l'ultima
-h, --help - Mostra questo messaggio di aiuto
COMANDI
help - Mostra un elenco di comandi o aiuto per un comando
bruteforce, bfs - Plugin per forzare offline e decifrare la firma del token.
jws, s - Genera un token JWT basato su firma (JWS).
jwe, e - Genera un token JWT basato su crittografia (JWE).
parse - Analizza un token JWT (accetta formati JWS e JWE).
wiki, w - Una wiki JWT per hacker.
-h COMANDO$jwtear -h jws
NOME
jws - Genera un token JWT basato su firma (JWS).
SINTASSI
jwtear [opzioni globali] jws [opzioni del comando]
DESCRIZIONE
Genera token JWS e JWE.
OPZIONI DEL COMANDO
-h, --header=JSON - Intestazione JWT (formato JSON). es. {"typ":"JWT","alg":"HS256"}. Esegui 'jwtear gen -l' per gli algoritmi supportati. (obbligatorio, predefinito: nessuno)
-p, --payload=JSON - Payload JWT (formato JSON). es. {"login":"admin"} (obbligatorio, predefinito: nessuno)
-k, --key=PASSWORD|PUB_KEY_FILE - Chiave come stringa di password o file di chiave pubblica. es. P@ssw0rd | es. public_key.pem (predefinito: nessuno)
I plugin sono definiti come sottocomandi. Ogni sottocomando può avere uno o più argomenti e/o interruttori.
$ 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
Per aggiungere un nuovo plugin, crea un nuovo file Ruby nella directory plugins con la seguente struttura
module JWTear
module CLI
extend GLI::App
extend JWTear::Helpers::Extensions::Print
extend JWTear::Helpers::Utils
desc "Breve descrizione del plugin"
long_desc "Descrizione lunga del plugin"
command [:template, :pt] do |c|
c.action do |global, options, arguments|
print_h1 "Modello plugin"
print_good "Ciao, sono un modello."
template = TemplatePlugin.new
end
end
end
module Plugin
class TemplatePlugin
include JWTear::Helpers::Extensions::Print
include JWTear::Helpers::Utils
def initialize
check_dependencies
# ..codice...
end
# ..codice...
end
end
end
Invece di includere tutte le dipendenze per ogni plugin in jwtear, puoi aggiungere queste dipendenze come hash al metodo check_dependencies, che richiederà la libreria e mostrerà un messaggio di errore gentile all'utente per installare eventuali gemme mancanti.
La chiave dell'hash è il nome della gemma da installare, il valore dell'hash è la stringa require.
deps = {'async-io' => 'async/ip'}
check_dependencies(deps)
Una volta che l'utente ha installato le dipendenze mancanti, check_dependencies le richiederà non appena la classe del plugin viene inizializzata.
Bug report e pull request sono benvenuti su GitHub all'indirizzo https://github.com/[USERNAME]/jwtear.
git checkout -b mia-nuova-funzionalità)git commit -am 'Aggiungi una funzionalità')git push origin mia-nuova-funzionalità)La gemma è disponibile come open source secondo i termini della Licenza MIT.