• Stars
    star
    99
  • Rank 343,315 (Top 7 %)
  • Language
    Ruby
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Modular command-line tool to parse, create and manipulate JWT tokens for hackers

Jwtear

A modular command-line tool to parse, create and manipulate JSON Web Token(JWT) tokens for security testing purposes.

Features

  • Complete modularity.
    • All commands are plugins.
    • Easy to add new plugins.
    • Support JWS and JWE tokens.
  • Easy interface for plugins. (follow the template example)
  • Flexible
  • token generation based on production-class libraries (e.g. json-jwt, jwe).

Available plugins

  • Parse: parses jwt tokens.
  • jws: manipulate and generate JWS tokens.
  • jwe: manipulate and generate JWE tokens.
  • bruteforce: brutefocing JWS signing key
  • wiki: contains offline information about JWT, attacks ideas, references.

Installation

install it yourself as:

$ gem install jwtear

Usage

  • Show the main menu
    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"    
NAME
    jwtear - Parse, create and manipulate JWT tokens.

SYNOPSIS
    jwtear [global options] command [command options] [arguments...]

GLOBAL OPTIONS
    -v, --version - Check current and latest version
    -h, --help    - Show this help message

COMMANDS
    help            - Shows a list of commands or help for one command
    bruteforce, bfs - plugin to offline bruteforce and crack token's signature.
    jws, s          - Generate signature-based JWT (JWS) token.
    jwe, e          - Generate encryption-based JWT (JWE) token.
    parse           - Parse JWT token (accepts JWS and JWE formats).
    wiki, w         - A JWT wiki for hackers.
  • Show a subcommand help, use -h COMMAND
$jwtear -h jws

NAME
    jws - Generate signature-based JWT (JWS) token.

SYNOPSIS
    jwtear [global options] jws [command options] 

DESCRIPTION
    Generate JWS and JWE tokens. 

COMMAND OPTIONS
    -h, --header=JSON               - JWT header (JSON format). eg. {"typ":"JWT","alg":"HS256"}. Run 'jwtear gen -l' for supported algorithms. (required, default: none)
    -p, --payload=JSON              - JWT payload (JSON format). eg. {"login":"admin"} (required, default: none)
    -k, --key=PASSWORD|PUB_KEY_FILE - Key as a password string or a file public key. eg. P@ssw0rd  | eg. public_key.pem (default: none)
  • Use a plugin

plugins are defined as subcommands. Each subcommand may have one or more argument and/or 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

Add plugin

To add a new plugin, create a new ruby file under plugins directory with the following structure

module JWTear
  module CLI
    extend GLI::App
    extend JWTear::Helpers::Extensions::Print
    extend JWTear::Helpers::Utils

    desc "Plugin short description"
    long_desc "Plugin long description"
    command [:template, :pt] do |c|
      c.action do |global, options, arguments|
        print_h1 "Plugin template"
        print_good "Hi, I'm a template."
        template = TemplatePlugin.new
      end
    end
  end

  module Plugin
    class TemplatePlugin
      include JWTear::Helpers::Extensions::Print
      include JWTear::Helpers::Utils

      def initialize
        check_dependencies
        # ..code...
      end
     
      # ..code...
    end
  end
end

Instead of including all dependencies for each plugin into jwtear, you can add these dependencies as a hash to check_dependencies method which will require the library and throw a gentle error to the user to install any missing gems.

The hash key is the gem name to install, the hash value is the require string

deps = {'async-io' => 'async/ip'}
check_dependencies(deps)

Once the missing dependencies are installed by the user, the check_dependencies will require them once the plugin class initiated.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/jwtear.

  1. Fork it ( https://github.com/KINGSABRI/jwtear/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Areas to contribute

  • contribution by reporting bugs.
  • contribution by perfecting the current code.
  • contribution by adding new plugins.
  • contribution by enhancing the jwtear wiki.
  • contribution by requesting features and/or plugins.

License

The gem is available as open source under the terms of the MIT License.

More Repositories

1

godofwar

GodOfWar - Malicious Java WAR builder with built-in payloads
Java
120
star
2

CVE-in-Ruby

Exploits written & ported to Ruby - no Metasploit
Ruby
80
star
3

ServerlessRedirector

Serverless Redirector in various cloud vendor for red team
Python
69
star
4

sqlmap-tamper-api

SQLMap tamper api to accept tamper scripts from all languages
JavaScript
59
star
5

goCabrito

Super organized and flexible script for sending phishing campaigns
Ruby
54
star
6

DotNetToJScriptMini

A simplified version of DotNetToJScript to create a JScript file which loads a .NET v2 assembly from memory.
C#
47
star
7

chkdfront

Check Domain Fronting (chkdfront) - It checks if your domain fronting is working
Ruby
43
star
8

BufferOverflow-Kit

We collect many tools used in buffer overflow development in one place, repeating with new idea is not a shame - thanks China :)
Ruby
34
star
9

AssemblyLoader

Various implementations for C# in memory execution. Assembly.Load() Assembly.LoadFile() AppDomain.ExecuteAssembly()
C#
32
star
10

Burp_Suite_Extension_Ruby

BurpSuite Extension Ruby Template to speed up building a Burp Extension using Ruby
Ruby
28
star
11

MSI-AlwaysInstallElevated

A Collection of templates that can be used for abusing window's AlwaysInstallElevated policy
26
star
12

AggressorScripts

A collection of Cobalt Strike aggressor scripts
18
star
13

USBNinjaPayloads

A centralized place to collect USB Ninja payloads
C++
16
star
14

creds-harvester

A simple, yet highly customizable, script to use with cloned websites for phishing and credentials harvesting
Ruby
15
star
15

hacker-gems

Hacker-gems installs most needed gems for hackers
Ruby
11
star
16

Spammers

A collection of files sent by spammers to my email
HTML
10
star
17

ruby-port-forward

an easy way to port forwarding using ruby
Ruby
8
star
18

nipper_parser

NipperPrser gem is an unofficial parser for Titania Nipper Studio XML report.
Ruby
7
star
19

sql

a console-based tool to connect to MSSQL server for red teamer and pentesters
Ruby
7
star
20

nessus-search

parse nessus report and search for specific data
Ruby
6
star
21

kingsabri-blog

5
star
22

getCabrito

Email open & click tracking server for goCabrito
CSS
4
star
23

soap_enumerator

Soap Enumerator converts WSDL document into Ruby objects. Inspired by SoapUI
Ruby
4
star
24

Bash-scripts

Some Bash scripts
Shell
3
star
25

kingsabri.gituhub.io

KING SABRI's blog
CSS
2
star
26

bigip2ip

Extracting the private IP of servers behind F5 loadbalancer from cookies
Ruby
2
star
27

WebShellConsole

WebShellConsole is a small interactive console connect simple web shell from command line using GET
Ruby
2
star
28

Books2Ruby

Rubyfu initiative: Convert scripts written in information security books to ruby
2
star
29

Ruby_CGI_Scripts

Ruby
1
star
30

unidecode2en

ASCII transliterations of Unicode text to English.
Go
1
star
31

fix-codimd-urls

Fix images path in CodiMD notes backup to be relative path
Ruby
1
star
32

form-rude

Ruby
1
star
33

BMC

Bashar Malware Checker
Ruby
1
star
34

katacoda-scenarios

Katacoda Scenarios
1
star
35

ninja-firewall

Ruby
1
star
36

SharePointMonkey-

1
star
37

arcsight_archiver

Arcsight has an issue in archiving which is limit archiving space to 200GB even you have more space!.
Ruby
1
star
38

TCP-Starvation

1
star
39

gitbook_plugins_test

1
star
40

DnsEnumSuite

Ruby
1
star
41

sqli-browser

CLI-based browser for manual SQLi exploitation.
Ruby
1
star
42

rt

My Red Teaming directory
1
star
43

ExpDev-Scripts

collection of helper scripts I use during exploitation development
Ruby
1
star
44

Scripts

Hack scripts for different purposes
Shell
1
star
45

Twitter-notifier

Ruby
1
star
46

SendPost

Ruby
1
star
47

Buby-Scripts

Repo containing various buby scripts
Ruby
1
star
48

kopykat

Windows keylogger created in Ruby.
Ruby
1
star
49

VulnerabilityDB

1
star
50

FormRude-console

Ruby
1
star