HiitCat/JWT-Arsenal
GitHub: HiitCat/JWT-Arsenal
一款完全在浏览器端运行的开源 JWT 漏洞利用工具包,帮助安全从业者在本地安全地伪造、检查和利用各种 JWT 漏洞。
Stars: 1 | Forks: 0

# JWT Arsenal
**开源的 JWT 漏洞利用工具包 - 专为浏览器构建。**
[](https://jwtarsenal.com)
[](https://nextjs.org)
[](https://www.typescriptlang.org)
[](LICENSE)
[](CONTRIBUTING.md)
伪造、检查和利用 JWT 漏洞,**完全在你的浏览器中进行**。
无需后端。数据不会离开你的设备。无需任何设置。
**[→ 打开应用](https://jwtarsenal.com)** · [知识库](https://jwtarsenal.com/knowledge-base) · [速查表](https://jwtarsenal.com/cheatsheet)
## 🎯 什么是 JWT Arsenal?
JWT Arsenal 是一个客户端安全工具包,专为需要快速测试 JWT 实现的**渗透测试人员**、**CTF 选手**和**漏洞赏金猎人**设计。所有的加密操作都在你的浏览器中通过 Web Crypto API 和 [jose](https://github.com/panva/jose) 本地运行。数据绝不会被发送到服务器。
该项目还附带了一个**知识库**,其中包含关于每种攻击的深度技术文章——RFC 参考、易受攻击的代码模式、真实的漏洞赏金案例以及缓解措施——让你不仅知其然(按下按钮发起攻击),更知其所以然(理解攻击原理)。
## ✨ 功能特性
### 🔍 JWT 检查器
粘贴任意 token 即可获得即时解析结果——解码后的 header、payload、原始签名字节、算法信息和过期状态。这是你每次处理 JWT 时的第一站。
### ⚔️ 漏洞利用工具
| 工具 | 攻击方式 |
|------|--------|
| 🔓 **未验证签名** | 服务器解码 token 但从不验证签名 |
| 🚫 **Algorithm None** | 使用 `alg: "none"` 剥离签名 - 测试所有大小写变体 |
| ⚡ **算法混淆** | 将 RS256 切换为 HS256,使用公钥作为 HMAC 密钥进行签名 |
| 🔑 **KID 注入** | 通过 `kid` header 进行路径遍历、SQL 注入和空字节 payload 攻击 |
| 📄 **JWK 注入** | 在 JWT header 中嵌入你自己的 RSA 公钥 |
| 🌐 **JKU 注入** | 将 `jku` 指向攻击者控制的 JWKS endpoint |
| 🔬 **公钥恢复** | 通过 GCD 从两个签名中恢复 RSA 密钥,进而串联至算法混淆攻击 |
### 📚 知识库
8 篇深度技术文章——从 JOSE RFC 系列到 PortSwigger Research 的真实发现——包含可运行的 Python 和 JavaScript 代码示例。
### 📋 CLI 速查表
随时可复制的命令,适用于 `hashcat`(GPU 破解)、`jwt_tool`、`rsa_sign2n`,以及用于浏览器无法承载的繁重计算任务的 Python 代码片段。
## 🔒 隐私至上
- **零后端** - 从 CDN 提供静态导出服务,无服务器端代码
- **零遥测** - 无 analytics SDK、无事件追踪、无指纹收集
- **运行时零网络请求** - 所有加密操作均通过浏览器原生的 Web Crypto API 运行
- 可安全粘贴来自实战项目的真实 token,无需担心日志记录
## 🚀 快速入门
### 前置条件
- Node.js ≥ 20
- npm ≥ 9
### 本地运行
```
# Clone the repo
git clone https://github.com/HiitCat/jwt-arsenal.git
cd jwt-arsenal
# Install dependencies
npm install
# 启动 dev server
npm run dev
# → http://localhost:3000
```
### 生产构建
```
npm run build
# 静态输出生成在 ./out
# 将 ./out 文件夹部署到任何位置 - 无需 server
```
## 🏗️ 技术栈
| 层级 | 技术 |
|-------|-----------|
| **Framework** | [Next.js 16](https://nextjs.org) - App Router, `output: 'export'` |
| **Language** | TypeScript 5 (strict mode) |
| **Crypto** | [jose](https://github.com/panva/jose) + native Web Crypto API |
| **UI** | Radix UI primitives + custom design system |
| **Fonts** | Inter + JetBrains Mono (self-hosted via Fontsource) |
| **Hosting** | Cloudflare Pages |
无后端框架。无数据库。无密钥。无需在服务器端维护任何东西。
## 📁 项目结构
```
jwt-arsenal/
├── app/
│ ├── page.tsx # Homepage - technique grid
│ ├── inspect/ # JWT inspector
│ ├── exploit/ # Exploit tool pages (one per attack)
│ │ ├── alg-none/
│ │ ├── algorithm-confusion/
│ │ ├── jku-injection/
│ │ ├── jwk-injection/
│ │ ├── kid-injection/
│ │ ├── public-key-recovery/
│ │ └── unverified-signature/
│ ├── knowledge-base/ # Technical articles (8 topics)
│ ├── cheatsheet/ # CLI command reference
│ └── about/ # Legal + project info
│
├── components/
│ ├── layout/ # Sidebar, KbArticle, PageLoader, GithubFab…
│ ├── jwt/ # JwtInput, JwtOutput, PayloadEditor, KeyInput
│ └── shared/ # GlowCard, CodeBlock, Icons, InfoCallout…
│
└── lib/
├── crypto.ts # RSA/HMAC/ECDSA browser crypto wrappers
├── jwt.ts # JWT encode/decode/forge helpers
├── kbTopics.ts # Knowledge Base metadata
└── seo.ts # pageMeta() helper + site constants
```
## 🤝 贡献
欢迎各种形式的贡献——新的漏洞利用模块、知识库文章、Bug 修复、UI 改进、翻译。我们对此深表感谢。
### 如何贡献
1. **Fork** 本仓库并将其 clone 到本地
2. 创建一个 **feature branch**:`git checkout -b feat/my-improvement`
3. 进行更改并验证构建:`npm run build`
4. 提交一个 **Pull Request**,并附带对你更改内容及原因的清晰描述
### 添加新的漏洞利用工具
1. 创建 `app/exploit/
/page.tsx` - 使用 `ExploitLayout` 作为包装器
2. 在同一文件夹中添加 `layout.tsx`,通过 `pageMeta()` 导出 `metadata`
3. 在 `app/sitemap.ts` 中注册路由
4. 可选择在 `app/knowledge-base//page.tsx` 中撰写一篇知识库文章
### 添加知识库文章
1. 将主题元数据添加到 `lib/kbTopics.ts`(标题、描述、颜色、标签等)
2. 使用 `KbArticle`、`H2`、`P`、`CodeBlock` 创建 `app/knowledge-base//page.tsx`
3. 在文件顶部通过 `pageMeta()` 导出 `metadata`
## 🗺️ 路线图
本项目处于积极维护中。计划添加的功能:
- [ ] 在所有漏洞利用工具中支持 ES256 / ECDSA
- [ ] Token 历史记录 - 将检查过的 token 持久化存储在 `localStorage` 中
- [ ] 一键创建临时 JWKS 服务器用于 JKU 测试(通过 serverless function)
- [ ] 批量模式 - 单次运行测试多个 token
- [ ] 深色 / 浅色主题切换
- [ ] 更多知识库文章 - `x5u`、`x5c`、JWT 混淆链、ECDSA nonce 复用
- [ ] 翻译 - 法语 🇫🇷
有想法?[提交一个 Issue](https://github.com/HiitCat/jwt-arsenal/issues) - 欢迎所有建议。
## ⚠️ 法律免责声明
JWT Arsenal 专为**授权的安全测试、CTF 比赛和教育教学而设计**。
请勿将此工具用于你不拥有或未获得明确书面授权进行测试的系统。
作者对滥用行为不承担任何责任。完整免责声明请参阅[关于页面](https://jwtarsenal.com/about)。
## 📄 许可证
[MIT](LICENSE) - 可自由使用、修改和分发。
为安全社区倾注 🧪 打造。
如果 JWT Arsenal 在你的实战项目或 CTF 中为你节省了时间,请考虑给仓库点个 Star - 这有助于其他人发现该项目。 ⭐
标签:Bug Bounty, CISA项目, JSON Web Token, JWT, Maven, TypeScript, URL发现, Web Crypto API, Web安全, 令牌伪造, 可自定义解析器, 安全插件, 安全检测, 客户端工具, 开源安全项目, 数字签名验证, 浏览器端, 漏洞验证, 网络安全, 自动化攻击, 蓝队分析, 隐私保护, 零部署