antwnakys/jwt-inspector
GitHub: antwnakys/jwt-inspector
一个零依赖的 Python JWT 安全分析器,能解码 token、标记常见漏洞并暴力破解弱 HMAC 签名密钥。
Stars: 0 | Forks: 0
# 🔑 jwt-inspector
   
一个 **JSON Web Token (JWT) 安全分析器**。它可以解码 token,标记出
经典的 JWT 漏洞,验证签名,并可以针对字典文件**暴力破解较弱的
HMAC 密钥** —— 所有这些功能完全基于 Python 标准库实现。
```
Header
{ "alg": "HS256", "typ": "JWT" }
Payload
{ "sub": "1234", "name": "Antonis", "role": "user" }
Security findings
----------------------------------------------------
[INFO] Symmetric algorithm (HS256) — only as strong as its secret
[MEDIUM] No expiration ('exp' claim missing) — token never expires
[LOW] No issued-at ('iat' claim missing)
Crack: trying 20 candidate secret(s)...
CRACKED — the signing secret is: 'secret'
With this secret an attacker can forge arbitrary tokens.
```
## 什么是 JWT,它是如何被破解的?
JWT 由三部分 base64url 字符串通过点号连接而成 —— `header.payload.signature`。
header 和 payload 是普通的 JSON(任何人都可以读取),而签名
用于证明 token 没有被篡改。大多数 JWT 漏洞都源于
签名较弱、缺失或验证不当:
| 漏洞 | 本工具的操作 |
| --- | --- |
| **`alg: none`** — token 声称无需签名 | 标记为 **CRITICAL**(经典的身份验证绕过) |
| **弱 HMAC 密钥** — 使用 `secret`、`password` 等签名 | 使用字典文件进行离线破解 |
| **无 / 已过期 / 极长有效期** | 标记出会话管理风险 |
| **缺少 `iat`**、未知算法、签名为空 | 分别标记其严重级别并提供修复建议 |
离线密钥破解是最令人震惊的:如果服务器使用可猜测到的密钥签署 HS256 token,
攻击者完全不需要触碰服务器 —— 他们在本地重新计算
签名,然后就可以伪造*任何* token(例如,将 `"role":"user"`
更改为 `"role":"admin"`)。
## 用法
```
# 解码 + 全面安全分析:
python -m jwtinspect
# 使用已知密钥验证签名:
python -m jwtinspect --secret my-signing-secret
# 尝试暴力破解 HMAC 密钥(内置常见密钥列表):
python -m jwtinspect --crack
# ...或使用您自己的 wordlist:
python -m jwtinspect --crack -w rockyou.txt
```
当发现 HIGH/CRITICAL 级别的问题或密钥被成功破解时,退出码为
**非零值** —— 这非常适合用作 CI 安全门禁。
## 构建原理
- **`decode.py`** — base64url 解码、JSON 解析以及常数时间的 HMAC
验证/签名(RFC 7519 / 7515)。仅实现了对称 HS\* 系列算法 ——
因为这些是可被破解的算法。
- **`analyze.py`** — 针对 header 和 claims 的结构性安全检查。
- **`crack.py`** — 针对每个候选密钥重新计算 HMAC 并进行比较。
- **`cli.py`** — 命令行界面及彩色报告。
## 无外部依赖
仅使用 Python 标准库(`base64`、`hashlib`、`hmac`、`json`)。
`pytest` 仅在运行测试时需要。直接实现 JWT 验证逻辑
(而不是导入现成的库)正是本项目的核心目的 —— 这是你*理解*
其安全模型的方式。
## 运行测试
```
pip install pytest
pytest
```
完全离线:在测试中使用已知的密钥伪造 token,然后对其进行解码、
分析并破解 —— 包括 `alg:none`、过期 token 以及**绝对不能**
被破解的强密钥 token。
## 项目布局
```
jwt-inspector/
├── jwtinspect/
│ ├── decode.py # base64url + JSON + HMAC verify/sign
│ ├── analyze.py # vulnerability findings
│ ├── crack.py # wordlist secret cracking
│ └── cli.py # command-line interface
└── tests/ # pytest suite (no network)
```
## 道德规范
请仅分析你拥有或被授权测试的 token。破解不属于你的 JWT 密钥可能
是违法的 —— 本工具仅用于防御和教育目的。
## 许可证
[MIT](LICENSE) — 可自由使用、学习和在此基础上进行开发。
标签:DOS头擦除, JWT, Python, SamuraiWTF, SysWhispers, Web安全, 安全规则引擎, 密码破解, 无后门, 蓝队分析, 逆向工具