rishuranjanofficial/JWTweak

GitHub: rishuranjanofficial/JWTweak

一款 JWT 安全测试工具包,能够检测 token 算法并针对各类 JWT 验证缺陷生成伪造或篡改的 token。

Stars: 100 | Forks: 19

# JWTweak ## 简介 随着 JSON Web Token (JWT) 在全球范围内的广泛使用,JWT 的攻击面已远远超出了经典的 `alg` 切换。**JWTweak v2.0** 是一款 JWT 安全测试工具包,能够检测输入 token 的算法,分析其高风险配置,并针对各种现代攻击类别生成伪造或篡改的 token——从而让你能够快速检查目标是如何验证(或未能验证)其 JWT 的。 它可以作为用于探索的**交互式菜单**运行,也可以作为用于自动化和 pipeline 的**可脚本化 CLI** 运行。 ## v2.0 的新特性 - **算法混淆 (RS/EC → HS)** 通过手动 HMAC 签名正确实现,因此适用于那些阻止将公钥作为 HMAC secret 的现代库。 - **密钥解析 header 注入**:`jwk` (CVE‑2018‑0114)、`jku` (攻击者托管的 JWKS)、`x5u` / `x5c` (攻击者证书)。 - **`kid` 注入**:路径遍历 (`/dev/null` → 空 key)、SQL 注入、命令注入探测。 - **Claim 篡改**:丢弃/延长 `exp`,提升 `role`/`admin`,编辑或替换任何 claim。 - 使用字典进行 **HMAC secret 暴力破解**(离线 secret 破解)。 - 用于重新签名的**现代算法**:`HS256/384/512`、`RS*`、`PS*`、`ES256/384/512`、`EdDSA`。 - **`alg:none` 大小写变体**(`none`、`None`、`NONE`、`nOnE`)以及签名剥离/位翻转。 - 输入 token 的**风险分析**(标记 `none`、弱 HMAC、`jku`/`jwk`/`x5u`/`kid`、缺失/过期的 `exp` 等)。 - **全套攻击套件**,将每个候选 token 输出到文件中,以便在 Burp/Repeater 或 fuzzer 中使用。 - 重新设计的 **UX**:分组循环菜单、彩色输出(在通过管道传输或使用 `--no-color` 时自动禁用)、支持从字符串/文件/stdin 读取 token,以及完整的 `argparse` CLI。 - 修复了与 **PyJWT 2.x** 的兼容性问题(之前存在的 `.decode('utf')` 调用已被移除),并将密钥/证书处理迁移至持续维护的 **`cryptography`** 库。 ## 环境要求 - Python 3.8+ - `pip install -r requirements.txt` (PyJWT 和 cryptography) ## 用法 ### 交互式 ``` python3 JWTweak.py # 或预先传入 token / 文件 python3 JWTweak.py -t eyJhbG... # token string python3 JWTweak.py -t token.jwt # file containing a token ``` ### 非交互式(可脚本化) ``` # 解码与风险分析 python3 JWTweak.py -t token.jwt --decode # alg:none 变体 python3 JWTweak.py -t token.jwt --attack none # 使用目标的 public key 进行 algorithm confusion python3 JWTweak.py -t token.jwt --attack confusion --public-key pub.pem # 在 jwk header 中嵌入攻击者密钥 (CVE-2018-0114) python3 JWTweak.py -t token.jwt --attack jwk # jku / x5u injection(指向你控制的主机) python3 JWTweak.py -t token.jwt --attack jku --jku https://you.example/jwks.json python3 JWTweak.py -t token.jwt --attack x5 --x5u https://you.example/cert.pem # kid path traversal / SQLi / command-injection 探测 python3 JWTweak.py -t token.jwt --attack kid --injected-key mykey # 篡改 claims,然后根据需要重新签名 python3 JWTweak.py -t token.jwt --attack tamper --set-claim role=admin --set-claim isAdmin=true python3 JWTweak.py -t token.jwt --attack resign --alg ES256 # 破解弱 HMAC secret python3 JWTweak.py -t token.jwt --attack crack --wordlist rockyou.txt # 运行全部测试并保存每个候选 token python3 JWTweak.py -t token.jwt --attack suite --public-key pub.pem -o tokens.txt ``` ## 攻击覆盖范围 | 领域 | 选项 | | --- | --- | | 侦察 | 解码 + 风险分析 | | 签名 / 算法 | `alg:none` 变体、算法混淆、重新签名 (HS/RS/PS/ES/EdDSA)、签名剥离 / 位翻转 | | 密钥解析 header | `jwk`、`jku`、`x5u`、`x5c` 注入 | | Key ID | `kid` 路径遍历、SQLi、命令注入 | | Claim | 丢弃/延长 `exp`、role/admin 提权、任意 claim 编辑 | | 破解 | HMAC secret 暴力破解(字典) | | 自动化 | 全套攻击套件 → 文件 | ## 作者 **Rishu Ranjan**
标签:JWT, Python, StruQ, Web安全, 无后门, 蓝队分析, 逆向工具