antwnakys/jwt-inspector

GitHub: antwnakys/jwt-inspector

一个零依赖的 Python JWT 安全分析器,能解码 token、标记常见漏洞并暴力破解弱 HMAC 签名密钥。

Stars: 0 | Forks: 0

# 🔑 jwt-inspector ![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white) ![Tests](https://img.shields.io/badge/tests-12%20passing-brightgreen?style=flat) ![License](https://img.shields.io/badge/license-MIT-green?style=flat) ![Dependencies](https://img.shields.io/badge/dependencies-stdlib%20only-lightgrey?style=flat) 一个 **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安全, 安全规则引擎, 密码破解, 无后门, 蓝队分析, 逆向工具