该命令行工具适用于渗透测试人员、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
该命令行工具适用于渗透测试人员、CTF玩家或开发者。
你可以修改你的JWT、签名、注入等操作。
完整文档位于 http://myjwt.readthedocs.io。
如果发现任何问题或有改进建议,请提交Issue。我会尽快回复。
祝使用愉快 :)
所有新的JWT将被复制到剪贴板。
Options:
--version 显示版本并退出。
--full-payload TEXT 为JWT设置新的载荷。需要JSON格式。
-h, --add-header TEXT 向JWT头部添加新的键值对,如果键已存在,旧值将被替换。格式:key=value。
-p, --add-payload TEXT 向JWT载荷添加新的键值对,如果键已存在,旧值将被替换。格式:key=value。
--sign TEXT 使用给定的密钥签名JWT。
--verify TEXT 验证你的密钥。
-none, --none-vulnerability 检查None算法漏洞。
--hmac PATH 检查RS/HMAC算法漏洞。
--bruteforce PATH 暴力破解用于签名令牌的密钥。
-r, --crack TEXT 使用正则表达式迭代所有可能的字符串,猜测用于签名令牌的密钥。
--kid TEXT kid注入(SQL)
--jku TEXT Jku头部用于绕过认证
--x5u TEXT X5u头部用于绕过认证
--crt TEXT 对于x5c头部,强制指定crt文件。
--key TEXT 对于jku或x5c头部,强制指定私钥文件。
--file TEXT 对于jku和x5u头部,强制指定文件名。
--print 打印解码后的JWT。
-u, --url TEXT 发送JWT的目标URL。
-m, --method TEXT 用于发送请求的方法(默认GET)。
-d, --data TEXT 发送到URL的数据。格式:key=value。如果value等于MY_JWT,则该值将被新的JWT替换。
-c, --cookies TEXT 发送到URL的Cookie。格式:key=value。如果value等于MY_JWT,则该值将被新的JWT替换。
--help 显示此帮助信息并退出。
| 选项 | 类型 | 示例 | 说明 |
|---|---|---|---|
| --ful-payload | JSON | {"user": "admin"} | 为JWT设置新的载荷。 |
| -h, --add-header | key=value | user=admin | 向JWT头部添加新的键值对,如果键已存在,旧值将被替换。 |
| -p, --add-payload | key=value | user=admin | 向JWT载荷添加新的键值对,如果键已存在,旧值将被替换。 |
| 选项 | 类型 | 示例 | 说明 |
|---|---|---|---|
| --sign | 文本 | mysecretkey | 使用你的密钥签名JWT。 |
| --verify | 文本 | mysecretkey | 验证你的密钥。 |
| 选项 | 类型 | 示例 | 说明 |
|---|---|---|---|
| -none, --none-vulnerability | 无 | 检查None算法漏洞。 | |
| --hmac | 路径 | ./public.pem | 检查RS/HMAC算法漏洞,并使用公钥签名JWT。 |
| --bruteforce | 路径 | ./wordlist/big.txt | 暴力破解用于签名令牌的密钥。使用包含所有密码的txt文件(每行一个)。 |
| --crack | 正则表达式 | "[a-z]{4}" | 使用正则表达式迭代所有可能的字符串,猜测用于签名令牌的密钥。 |
| --kid | 文本 | "00; echo /etc/.passwd" | kid注入(SQL) |
| --jku | 文本 | MYPUBLICIP | Jku头部用于绕过认证,使用--file更改jwks文件名,--key指定自己的私钥PEM。 |
| --x5u | 文本 | MYPUBLICIP | 对于jku或x5c头部,使用--file更改jwks文件名,--key指定自己的私钥PEM。 |
| 选项 | 类型 | 示例 | 说明 |
|---|---|---|---|
| -u, --url | URL | http://challenge01.root-me.org/web-serveur/ch59/admin | 发送JWT的目标URL。 |
| -m, --method | 文本 | POST | 用于发送请求的方法(默认:GET)。 |
| -d, --data | key=value | secret=MY_JWT | 发送到URL的数据。格式:key=value。如果value等于MY_JWT,则该值将被你的新JWT替换。 |
| -c, --cookies | key=value | secret=MY_JWT | 发送到URL的Cookie。格式:key=value。如果value等于MY_JWT,则该值将被你的新JWT替换。 |
| 选项 | 类型 | 示例 | 说明 |
|---|---|---|---|
| --crt | 路径 | ./public.crt | 对于x5c头部,强制指定crt文件。 |
| --key | 路径 | ./private.pem | 对于jku或x5c头部,强制指定私钥文件。 |
| --file | 文本 | myfile | 对于jku头部,强制指定文件名(不带.json扩展名)。 |
| 无 | 打印解码后的JWT。 | ||
| --help | 无 | 显示帮助信息并退出。 | |
| --version | 无 | 显示Myjwt版本。 |
myjwt YOUR_JWT --add-payload "username=admin" --add-header "refresh=false"
from myjwt.modify_jwt import add_header, change_payload
from myjwt.utils import jwt_to_json, SIGNATURE, encode_jwt