
JWT(JSON Web Token)のクラッキングや脆弱性テストを行うためのCLI
このCLIは、ペネトレーションテスター、CTFプレイヤー、または開発者向けです。
JWTの修正、署名、インジェクションなどが可能です。
詳細はドキュメントをご確認ください。
問題点や改善点がありましたら、Issueを送信してください。できるだけ早く対応します。
お楽しみください :)
ドキュメントは http://myjwt.readthedocs.io で入手できます。
myjwtをインストールするには、pipを使用するだけです:
pip install myjwt
Dockerイメージからmyjwtを実行するには、次のコマンドを実行します:
docker run -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
# mount volume for wordlist
docker run -v $(pwd)/wordlist:/home/wordlist/ -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
# On Windows
docker run -v %CD%/wordlist:/home/wordlist/ -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
gitからmyjwtをインストールするには:
git clone https://github.com/mBouamama/MyJWT.git
cd ./MyJWT
pip install -r requirements.txt
python MyJWT/myjwt_cli.py --help
BlackArchにmyjwtをインストールするには:
pacman -S myjwt
$ myjwt --help
Usage: myjwt [OPTIONS] JWT
This cli is for pentesters, CTF players, or dev.
You can modify your jwt, sign, inject ,etc...
Full documentation is at http://myjwt.readthedocs.io.
If you see problems or enhancement send an issue.I will respond as soon as possible.
Enjoy :)
All new jwt will be copy to the clipboard.
Options:
--version Show the version and exit.
--full-payload TEXT New payload for your jwt.Json format Required.
-h, --add-header TEXT Add a new key, value to your jwt header, if key
is present old value will be replaced.Format:
key=value.
-p, --add-payload TEXT Add a new key, value to your jwt payload, if
key is present old value will be
replaced.Format: key=value.
--sign TEXT Sign Your jwt with key given.
--verify TEXT verify your key.
-none, --none-vulnerability Check None Alg vulnerability.
--hmac PATH Check RS/HMAC Alg vulnerability.
--bruteforce PATH Bruteforce to guess the secret used to sign the
token.
-r, --crack TEXT regex to iterate all string possibilities to
guess the secret used to sign the token.
--kid TEXT Kid Injection sql
--jku TEXT Jku Header to bypass authentication
--x5u TEXT X5u Header to bypass authentication
--crt TEXT For x5cHeader, force crt file
--key TEXT For jku or x5c Header, force private key to
your key file
--file TEXT For jku Header and x5u Header, force file name
--print Print Decoded JWT
-u, --url TEXT Url to send your jwt.
-m, --method TEXT Method use for send request to url.(Default
GET).
-d, --data TEXT Data send to your url.Format: key=value. if
value = MY_JWT value will be replace by new
jwt.
-c, --cookies TEXT Cookies to send to your url.Format: key=value.
if value = MY_JWT value will be replace by new
jwt.
--help Show this message and exit.
| オプション | タイプ | 例 | 説明 |
|---|---|---|---|
| --ful-payload | JSON | {"user": "admin"} | JWTの新しいペイロード。 |
| -h, --add-header | key=value | user=admin | ヘッダーに新しいキーと値を追加します。キーが既に存在する場合は古い値が置き換えられます。 |
| -p, --add-payload | key=value | user=admin | ペイロードに新しいキーと値を追加します。キーが既に存在する場合は古い値が置き換えられます。 |
| オプション | タイプ | 例 | 説明 |
|---|---|---|---|
| --sign | text | mysecretkey | キーでJWTに署名します |
| --verify | text | mysecretkey | キーを検証します。 |
| オプション | タイプ | 例 | 説明 |
|---|---|---|---|
| -none, --none-vulnerability | なし | None Alg脆弱性をチェックします。 | |
| --hmac | PATH | ./public.pem | RS/HMAC Alg脆弱性をチェックし、公開キーでJWTに署名します。 |
| --bruteforce | PATH | ./wordlist/big.txt | トークンの署名に使用されたシークレットを推測するためのブルートフォース。全てのパスワードが1行に1つずつ格納されたテキストファイルを使用します。 |
| --crack | REGEX | "[a-z]{4}" | トークンの署名に使用されたシークレットを推測するために、すべての文字列の可能性を反復する正規表現。 |
| --kid | text | "00; echo /etc/.passwd" | Kid Injection SQL |
| --jku | text | MYPUBLICIP | 認証をバイパスするためのJkuヘッダー。jwksファイル名を変更したい場合は--fileを、独自の秘密PEMを使用したい場合は--keyを使用します。 |
| --x5u | text | MYPUBLICIP | 認証をバイパスするためのX5uヘッダー。jwksファイル名を変更したい場合は--fileを、独自の秘密PEMを使用したい場合は--keyを使用します。 |
| オプション | タイプ | 例 | 説明 |
|---|---|---|---|
| -u, --url | url | http://challenge01.root-me.org/web-serveur/ch59/admin | JWTを送信するURL。 |
| -m, --method | text | POST | URLへのリクエストに使用するメソッド。(デフォルト: GET)。 |
| -d, --data | key=value | secret=MY_JWT | URLに送信するデータ。形式: key=value。値がMY_JWTの場合、新しいJWTに置き換えられます。 |
| -c, --cookies | key=value | secret=MY_JWT | URLに送信するクッキー。形式: key=value。値がMY_JWTの場合、新しいJWTに置き換えられます。 |