hahwul/jwt-hack
GitHub: hahwul/jwt-hack
一款功能全面的 JWT/JWE 安全测试工具,支持编解码、签名验证、密钥破解、攻击载荷生成和漏洞扫描。
Stars: 972 | Forks: 119
JSON Web Token Hack Toolkit
一个用于测试、分析和攻击 JSON Web Token 的高性能工具包。
## 安装
### Cargo
```
cargo install jwt-hack
```
### Homebrew
```
brew install jwt-hack
```
### Snapcraft (Ubuntu)
```
sudo snap install jwt-hack
```
### 从源码构建
```
git clone https://github.com/hahwul/jwt-hack
cd jwt-hack
cargo install --path .
```
### Docker 镜像
#### GHCR
```
docker pull ghcr.io/hahwul/jwt-hack:latest
```
#### Docker Hub
```
docker pull hahwul/jwt-hack:v2.5.0
```
## 功能
| 模式 | 描述 | 支持 |
|---------|------------------------------|--------------------------------------------------------------|
| Encode | JWT/JWE 编码器 | 基于密钥 / 基于密钥对 / 算法 / 自定义 Header / DEFLATE 压缩 / JWE |
| Decode | JWT/JWE 解码器 | 算法, 签发时间检查, DEFLATE 压缩, JWE 结构 |
| Verify | JWT 验证器 | 基于密钥 / 基于密钥对 (用于非对称算法) |
| Crack | 密钥破解器 | 字典攻击 / 暴力破解 / DEFLATE 压缩 |
| Payload | JWT 攻击 Payload 生成器 | none / jku&x5u / alg_confusion / kid_sql / x5c / cty |
| Scan | 漏洞扫描器 | 针对常见 JWT 漏洞的自动化安全检查 |
| Server | API Server | 运行 API 服务器模式 (http://localhost:3000) |
| MCP | 模型上下文协议服务器 | 通过标准化协议集成 AI 模型 |
## 基本用法
### 解码 JWT
你可以解码常规和 DEFLATE 压缩的 JWT。该工具会自动检测并解压压缩的 token。
```
jwt-hack decode eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.CHANGED
jwt-hack decode COMPRESSED_JWT_TOKEN
```
### 解码 JWE
解码 JWE (JSON Web Encryption) token 以分析其结构。该工具会自动检测 JWE 格式 (5 部分) 并显示加密细节。
```
# Decode JWE token structure
jwt-hack decode eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..ZHVtbXlfaXZfMTIzNDU2.eyJ0ZXN0IjoiandlIn0.ZHVtbXlfdGFn
# Shows JWE header, encrypted key, IV, ciphertext, and authentication tag
```
### 编码 JWT
```
jwt-hack encode '{"sub":"1234"}' --secret=your-secret
```
#### 编码带 DEFLATE 压缩的 JWT
你可以使用 `--compress` 选项对 JWT payload 进行 DEFLATE 压缩。
```
jwt-hack encode '{"sub":"1234"}' --secret=your-secret --compress
```
# 使用私钥
ssh-keygen -t rsa -b 4096 -E SHA256 -m PEM -P "" -f RS256.key
jwt-hack encode '{"a":"z"}' --private-key RS256.key --algorithm=RS256
```
### Encode a JWE
Create JWE (JSON Web Encryption) tokens for testing encrypted JWT scenarios.
```bash
# Basic JWE encoding
jwt-hack encode '{"sub":"1234", "data":"encrypted"}' --jwe --secret=your-secret
# JWE tokens are encrypted and can only be decrypted with the proper key
jwt-hack encode '{"sensitive":"data"}' --jwe
```
### 验证 JWT
使用提供的密钥或密钥对检查 JWT 签名是否有效。
```
# With Secret (HMAC algorithms like HS256, HS384, HS512)
jwt-hack verify YOUR_JWT_TOKEN_HERE --secret=your-256-bit-secret
# With Private Key (for asymmetric algorithms like RS256, ES256, EdDSA)
jwt-hack verify YOUR_JWT_TOKEN_HERE --private-key path/to/your/RS256_private.key
```
### 破解 JWT
字典和暴力破解攻击也支持使用 DEFLATE 压缩的 JWT。
```
# Dictionary attack
jwt-hack crack -w wordlist.txt JWT_TOKEN
jwt-hack crack -w wordlist.txt COMPRESSED_JWT_TOKEN
# Bruteforce attack
jwt-hack crack -m brute JWT_TOKEN --max=4
jwt-hack crack -m brute COMPRESSED_JWT_TOKEN --max=4
```
### 生成 Payload
```
jwt-hack payload JWT_TOKEN --jwk-attack evil.com --jwk-trust trusted.com
```
### 扫描漏洞
自动扫描 JWT token 的常见安全问题和漏洞。
```
# Full scan including weak secret detection and payload generation
jwt-hack scan JWT_TOKEN
# Skip secret cracking for faster results
jwt-hack scan JWT_TOKEN --skip-crack
# Skip payload generation
jwt-hack scan JWT_TOKEN --skip-payloads
# Use custom wordlist for weak secret detection
jwt-hack scan JWT_TOKEN -w custom_wordlist.txt
# Limit secret testing attempts
jwt-hack scan JWT_TOKEN --max-crack-attempts 50
```
扫描命令检查以下内容:
- **None 算法漏洞**:检测 token 是否接受未签名的 token
- **弱密钥**:使用常见密码进行测试(可通过 wordlist 自定义)
- **算法混淆**:识别易受 RS256->HS256 攻击的 token
- **Token 过期问题**:检查是否缺少或不正确地设置了过期声明
- **缺少安全声明**:验证是否存在推荐的 JWT 声明
- **Kid Header 注入**:检测潜在的 SQL/路径注入漏洞
- **JKU/X5U Header 攻击**:识别 URL 欺骗攻击向量
### 服务器 (REST API)
启动本地 REST API 用于自动化和集成。如需身份验证,请使用 `--api-key` 并在请求中包含 `X-API-KEY`。
```
# Start on localhost:3000 with API key protection
jwt-hack server --api-key your-api-key
# Example request (must include X-API-KEY when --api-key is set)
curl -s http://127.0.0.1:3000/health -H 'X-API-KEY: your-api-key'
```
### MCP (模型上下文协议) 服务器模式
jwt-hack 可以作为 MCP 服务器运行,允许 AI 模型通过标准化协议与 JWT 功能进行交互。
```
# Start MCP server (communicates via stdio)
jwt-hack mcp
```
MCP 服务器公开以下工具:
| 工具 | 描述 | 参数 |
|------|-------------|------------|
| `decode` | 解码 JWT token | `token` (字符串) |
| `encode` | 将 JSON 编码为 JWT | `json` (字符串), `secret` (可选), `algorithm` (默认: HS256), `no_signature` (布尔值) |
| `verify` | 验证 JWT 签名 | `token` (字符串), `secret` (可选), `validate_exp` (布尔值) |
| `crack` | 破解 JWT token | `token` (字符串), `mode` (dict/brute), `chars` (字符串), `max` (数字) |
| `payload` | 生成攻击 payload | `token` (字符串), `target` (字符串), `jwk_attack` (可选), `jwk_protocol` (默认: https) |
#### MCP 使用示例
MCP 服务器旨在供 AI 模型和 MCP 客户端使用。每个工具接受 JSON 参数并返回结构化响应。
**Decode 工具:**
```
{
"name": "decode",
"arguments": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
```
**Encode 工具:**
```
{
"name": "encode",
"arguments": {
"json": "{\"sub\":\"1234\",\"name\":\"test\"}",
"secret": "mysecret",
"algorithm": "HS256"
}
}
```
#### MCP 客户端集成示例
你可以将 jwt-hack 的 MCP 服务器连接到支持 MCP 的流行客户端。确保 `jwt-hack` 二进制文件位于你的系统中且客户端可访问。
**VSCode**
```
{
"servers": {
"jwt-hack": {
"type": "stdio",
"command": "jwt-hack",
"args": [
"mcp"
]
}
},
"inputs": []
}
```
**Claude Desktop**
```
{
"mcpServers": {
"jwt-hack": {
"command": "jwt-hack",
"args": ["mcp"],
"env": {}
}
}
}
```
## DEFLATE 压缩支持
## 贡献
Urx 是一个开源项目,用 ❤️ 制作
如果你想为这个项目做出贡献,请查看 [CONTRIBUTING.md](./CONTRIBUTING.md) 并提交包含精彩内容的 Pull-Request。
[](https://github.com/hahwul/jwt-hack/graphs/contributors)
标签:CVE, DevSecOps, Docker, JSON Web Token, JWT, Rust, 上游代理, 令牌攻击, 可视化界面, 安全防御评估, 攻击路径可视化, 数字签名, 编码解码, 网络安全, 网络流量审计, 请求拦截, 通知系统, 通知系统, 通知系统, 隐私保护, 高并发, 黑客工具