JSON Web Token 攻击工具包
一个用于测试、分析和攻击 JSON Web Token 的高性能工具包。
cargo install jwt-hack
brew install jwt-hack
sudo snap install jwt-hack
choco install jwt-hack
git clone https://github.com/hahwul/jwt-hack
cd jwt-hack
cargo install --path .
docker pull ghcr.io/hahwul/jwt-hack:latest
docker pull hahwul/jwt-hack:v2.6.0
| 模式 | 描述 | 支持 |
|---|---|---|
| Encode | JWT/JWE 编码器 | 基于密钥 / 基于密钥对 / 算法 / 自定义头部 / DEFLATE 压缩 / JWE |
| Decode | JWT/JWE 解码器 | 算法、签发时间检查、DEFLATE 压缩、JWE 结构 |
| Verify | JWT 验证器 | 基于密钥 / 基于密钥对(用于非对称算法) |
| Crack | 密钥破解器 | 字典攻击 / 暴力破解 / DEFLATE 压缩 |
| Payload | JWT 攻击载荷生成器 | none / jku&x5u / alg_confusion(通过 --public-key 签名)/ kid 与声明注入 / 声明篡改 / 签名可延展性 / JWE 探测 / x5c / cty |
| Scan | 漏洞扫描器 | 针对常见 JWT 漏洞的自动化安全检查 |
| Server | API 服务器 | 运行 API 服务器模式 (http://localhost:3000) |
| MCP | 模型上下文协议服务器 | 通过标准化协议集成 AI 模型 |
你可以解码普通和 DEFLATE 压缩的 JWT。该工具将自动检测并解压压缩的令牌。
jwt-hack decode eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.CHANGED
jwt-hack decode COMPRESSED_JWT_TOKEN
解码 JWE(JSON Web Encryption)令牌以分析其结构。该工具会自动检测 JWE 格式(5 个部分)并显示加密详情。
# Decode JWE token structure
jwt-hack decode eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..ZHVtbXlfaXZfMTIzNDU2.eyJ0ZXN0IjoiandlIn0.ZHVtbXlfdGFn
# Shows JWE header, encrypted key, IV, ciphertext, and authentication tag
jwt-hack encode '{"sub":"1234"}' --secret=your-secret
你可以使用 --compress 选项对 JWT 载荷应用 DEFLATE 压缩。
jwt-hack encode '{"sub":"1234"}' --secret=your-secret --compress
# With Private Key
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
创建 JWE(JSON Web Encryption)令牌以测试加密 JWT 场景。
# 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 的签名是否有效。
# 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
字典和暴力破解攻击也支持使用 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
jwt-hack payload JWT_TOKEN --jwk-attack evil.com --jwk-trust trusted.com
自动扫描 JWT 令牌以发现常见的安全问题和漏洞。
# 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
scan 命令检查以下内容:
启动本地 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'
jwt-hack 可以作为 MCP 服务器运行,允许 AI 模型通过标准化协议与 JWT 功能进行交互。
# Start MCP server (communicates via stdio)
jwt-hack mcp
MCP 服务器提供以下工具:
| 工具 | 描述 | 参数 |
|---|---|---|
decode | 解码 JWT 令牌 | token (string) |
encode | 将 JSON 编码为 JWT | json (string), secret (optional), algorithm (default: HS256), no_signature (boolean) |
verify | 验证 JWT 签名 | token (string), secret (optional), validate_exp (boolean) |
crack | 破解 JWT 令牌 | token (string), mode (dict/brute), chars (string), max (number) |
payload | 生成攻击载荷 | token (string), target (string), jwk_attack (optional), jwk_protocol (default: https), public_key (optional PEM/path for signed alg-confusion) |
MCP 服务器设计用于 AI 模型和 MCP 客户端。每个工具接受 JSON 参数并返回结构化响应。
Decode 工具:
{
"name": "decode",
"arguments": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
Encode 工具:
{
"name": "encode",
"arguments": {
"json": "{\"sub\":\"1234\",\"name\":\"test\"}",
"secret": "mysecret",
"algorithm": "HS256"
}
}
你可以将 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": {}
}
}
}
| 算法 | 描述 | 类型 |
|---|---|---|
| HS256 | 使用 SHA-256 的 HMAC | 对称 |
| HS384 | 使用 SHA-384 的 HMAC | 对称 |
| HS512 | 使用 SHA-512 的 HMAC | 对称 |
| RS256 | 使用 SHA-256 的 RSASSA-PKCS1-v1_5 | 非对称 |
| RS384 | 使用 SHA-384 的 RSASSA-PKCS1-v1_5 | 非对称 |
| RS512 | 使用 SHA-512 的 RSASSA-PKCS1-v1_5 | 非对称 |
| ES256 | 使用 P-256 和 SHA-256 的 ECDSA | 非对称 |
| ES384 | 使用 P-384 和 SHA-384 的 ECDSA | 非对称 |
| PS256 | 使用 SHA-256 的 RSASSA-PSS | 非对称 |
| PS384 | 使用 SHA-384 的 RSASSA-PSS | 非对称 |
| PS512 | 使用 SHA-512 的 RSASSA-PSS | 非对称 |
| EdDSA | Edwards 曲线数字签名算法 | 非对称 |
| none | 无数字签名 | - |
| 算法 | 描述 |
|---|---|
| A128GCM | 使用 128 位密钥的 AES-GCM |
| A256GCM | 使用 256 位密钥的 AES-GCM |
| 算法 | 描述 |
|---|---|
| dir | 直接使用共享对称密钥 |