用途:当目标 API 使用 Authorization: Bearer eyJ... 头、JS 包中出现 eyJ... 令牌模式、或 Cookie 含 jwt=/token=/session= 等 base64 值时,用于测试 JWT 认证实现的安全性。
主要能力:在不验证签名的前提下解码 JWT 头部与载荷并检查过期时间;alg:none 伪造;RS256→HS256 密钥混淆(用 RSA 公钥作 HMAC 密钥);HS256 弱密钥爆破(内置常见密钥列表与字典前 5000 条,或改用 hashcat -m 16500、john);kid 头路径遍历/注入;过期令牌复用;从 JS/source 提取硬编码 JWT。资料称已在多个企业门户、金融处理器、健身连锁、配送平台与政府金融门户中确认有效。
使用方式:依赖 curl 与 python3,爆破可选 hashcat/john。先解码分析,再依次测试 alg:none、密钥混淆、弱密钥爆破与 kid 注入,用 curl 以伪造令牌请求受保护端点并观察 HTTP 状态码。关键命令保持原样,如 hashcat -m 16500。
适用场景:API 鉴权绕过测试、JS 秘密提取后的令牌利用、无鉴权探测中需伪造令牌的场景。
限制与注意事项:自 2017 年起多数 JWT 库默认拒绝 alg:none,仅遗留应用可能受影响;RS256→HS256 需要获取公钥(常见于 /.well-known/jwks.json 或 JS 包);Python 爆破较慢;Laravel Passport 会校验 jti 是否存在于数据库;Auth0/Firebase 通过 JWKS 校验,alg:none 不会生效。验证标准:alg:none 需返回 HTTP 200;密钥混淆需通过服务端校验;爆破出的密钥需能为修改后的载荷生成有效签名;硬编码令牌需实测可用;kid 注入需出现与无效签名不同的错误。资料未提供收费、价格或平台信息。