工具介绍
jwt_tool.py是一个用于验证、伪造、扫描和篡改 JWT(JSON Web Tokens)的工具包。
其功能包括:
- 检查令牌的有效性
- 测试已知漏洞:
- (CVE-2015-2951) alg=none签名绕过漏洞
- (CVE-2016-10555) RS/HS256公钥不匹配漏洞
- (CVE-2018-0114)密钥注入漏洞
- (CVE-2019-20933/CVE-2020-28637)空白密码漏洞
- (CVE-2020-28042)空签名漏洞
- 扫描错误配置或已知弱点
- 对声明值进行模糊测试以引发意外行为
- 测试秘密/密钥文件/公钥/JWKS 密钥的有效性
- 通过高速字典攻击识别弱密钥
- 伪造新的令牌头和有效负载内容,并使用密钥或通过其他攻击方法创建新的签名
- 时间戳篡改
- RSA 和 ECDSA 密钥生成和重建(来自 JWKS 文件)
工具使用
用法
第一个参数应该是 JWT 本身(除非在标头或 cookie 值中提供)。不提供其他参数将显示解码后的令牌值以供查看。
$ python3 jwt_tool.py <JWT>
该工具包将验证令牌并列出标头和有效负载值。
附加参数
许多其他参数将直接带您进入相应的函数并返回一个可用于测试的令牌。
例如,要篡改现有令牌,请运行以下命令:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -T
许多选项需要附加值来设置选项。
例如,要运行特定类型的漏洞利用,您需要选择 eXploit (-X) 选项并选择漏洞(此处使用“a”表示 alg :none漏洞利用):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -X a
额外参数
某些选项(例如验证令牌)需要提供额外的参数/文件(此处提供 PEM 格式的公钥):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -V -pk public.pem
向 Web 应用程序发送令牌
现在所有模式都允许将令牌直接发送到应用程序。
您需要指定:
目标 URL (-t)
应用程序所需的请求标头(-rh)或请求 cookie(-rc)(至少一个必须包含令牌)
(可选)任何 POST 数据(其中请求是 POST)
(可选)任何附加的 jwt_tool 选项,例如模式或篡改/注入选项
(可选)金丝雀值(-cv) - 您希望在成功使用令牌时看到的文本值(例如“欢迎,ticarpi”)
示例请求可能如下所示(使用扫描模式强制错误):
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -rh "Origin: null" -cv "Welcome" -M er
显示请求的各种响应:
响应码
响应大小
唯一的请求跟踪 ID(用于日志记录)
使用的模式/选项
下载链接
https://github.com/ticarpi/jwt_tool
原文始发于微信公众号(贝雷帽SEC):JSON Web Tokens 令牌工具包 v2
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论