JWT工具项目
免责声明
本文只做学术研究使用,不可对真实未授权网站使用,如若非法他用,与平台和本文作者无关,需自行负责!
JWT解密官方网站:https://jwt.io/
burp版本必须大于2024年
Hae
地址:https://github.com/gh0stkey/HaE
功能:高亮提取器,发现JWT数据可高亮显示


JSON Web Tokens
功能:可验证签名是否正确、可直接修改JWT数据,无需去网站修改

可验证签名是否正确:



JWT Editor
功能:可直接修改JWT数据,无需去网站修改、可对JWT进行加密与解密并进行自动化攻击

经测试,2026.02.1版本的Burp在使用JWT Editor插件时,Copy Public Key as PEM功能不能使用,无法复制为PEM,在2024.05.03版本可正常使用


jwt–scanner
地址:https://github.com/CompassSecurity/jwt–scanner
功能:扫描是否存在JWT漏洞、伪造公钥

自动检测JWT:


手动选择JWT:需要选中JWT数据

伪造公钥:选中两个相同请求但不同的JWT数据

Venom–JWT
JWT利用工具:https://github.com/z–bool/Venom–JWT
功能:对JWT漏洞和密钥爆破服务渗透测试


jwt_tool
JWT爆破工具(python版本建议大于3.6):https://github.com/ticarpi/jwt_tool
功能:用于验证、伪造、扫描和篡改 JWT(JSON Web 令牌)的工具包
安装:python -m pip install -r requirements.txt

参数:位置参数(必选 / 按需指定)jwt:要操作的 JWT 令牌(如果令牌在请求头 / Cookie 中则无需手动指定)可选参数-h, --help 显示此帮助信息并退出-b, --bare 仅返回令牌内容(不输出额外信息)-t TARGETURL, --targeturl TARGETURL 发送携带新 JWT 的 HTTP 请求的目标 URL-r REQUEST, --request REQUEST 作为基准的 URL 请求(用于复用请求模板)-rt RATE, --rate RATE 每分钟最大请求数(限流)-i, --insecure 对传入的请求使用 HTTP 协议(而非 HTTPS)-rc COOKIES, --cookies COOKIES 随伪造 HTTP 请求发送的 Cookie 内容-rh HEADERS, --headers HEADERS 随伪造 HTTP 请求发送的请求头(可多次使用以添加多个请求头)-pd POSTDATA, --postdata POSTDATA POST 请求中要发送的所有数据的文本字符串-cv CANARYVALUE, --canaryvalue CANARYVALUE 有效令牌响应中会出现的特征字符串(例如:"Welcome, ticarpi")-np, --noproxy 禁用当前请求的代理(如需永久禁用,修改 jwtconf.ini 配置)-nr, --noredir 禁用当前请求的重定向(如需永久禁用,修改 jwtconf.ini 配置)-M MODE, --mode MODE 扫描模式:pb = 剧本审计(playbook audit)er = 模糊测试现有声明以触发错误(fuzz existing claims to force errors)cc = 模糊测试常见声明(fuzz common claims)at = 执行所有测试!(All Tests!)-X EXPLOIT, --exploit EXPLOIT利用已知漏洞:a = alg:none 算法绕过(禁用签名验证)n = 空签名(null signature)b = 签名中接受空白密码(blank password accepted in signature)p = ECDSA 签名中接受 “预知签名”('psychic signature')s = 伪造 JWKS(需通过 -ju 指定 JWKS 地址,或在 jwtconf.ini 中配置以自动攻击)k = 密钥混淆攻击(key confusion,需通过 -pk 指定公钥)i = 注入内联 JWKS(inject inline JWKS)-ju JWKSURL, --jwksurl JWKSURL 可托管伪造 JWKS 的 URL 地址-S SIGN, --sign SIGN 对生成的令牌进行签名:hs256/hs384/hs512 = HMAC-SHA 签名(需通过 -k/-p 指定密钥)rs256/rs384/rs512 = RSA 签名(需通过 -pr 指定 RSA 私钥)es256/es384/es512 = 椭圆曲线签名(需通过 -pr 指定 EC 私钥)ps256/ps384/ps512 = PSS-RSA 签名(需通过 -pr 指定 RSA 私钥)-pr PRIVKEY, --privkey PRIVKEY 非对称加密使用的私钥-T, --tamper 篡改 JWT 内容 (需通过 -S 设置签名选项,或通过 -X 使用漏洞利用方式)-I, --injectclaims 注入新声明,并使用新值更新现有声明(需通过 -S 设置签名选项,或通过 -X 使用漏洞利用方式)(需通过 -hc/-pc 指定目标声明,通过 -hv/-pv 指定注入值 / 值列表)-hc HEADERCLAIM, --headerclaim HEADERCLAIM 要篡改的头部声明(Header claim)-pc PAYLOADCLAIM, --payloadclaim PAYLOADCLAIM 要篡改的载荷声明(Payload claim)-hv HEADERVALUE, --headervalue HEADERVALUE 注入到被篡改头部声明中的值(或包含值的文件路径)-pv PAYLOADVALUE, --payloadvalue PAYLOADVALUE 注入到被篡改载荷声明中的值(或包含值的文件路径)-C, --crack 破解 HMAC-SHA 类型令牌的密钥(需指定 -d/-p/-kf 中的一个)-d DICT, --dict DICT 破解使用的字典文件路径-p PASSWORD, --password PASSWORD 破解使用的密码(单个密码)-kf KEYFILE, --keyfile KEYFILE 破解使用的密钥文件(针对使用 'kid' 攻击签名的令牌)-V, --verify 验证 RSA 签名是否匹配公钥(需指定 -pk/-jw)-pk PUBKEY, --pubkey PUBKEY 非对称加密使用的公钥-jw JWKSFILE, --jwksfile JWKSFILE 非对称加密使用的 JSON Web Key Store(JWKS)文件-Q QUERY, --query QUERY 根据令牌 ID 查询日志文件,查看该请求的详细信息示例:-Q jwttool_46820e62fe25c10a3f5498e426a9f03a-v, --verbose 解析和输出时,生成(略多的)详细输出
基础使用:python jwt_tool.py JWT数据 -C -d jwt字典

jwt–secrets
JWT字典:https://github.com/wallarm/jwt–secrets
夜雨聆风