hahwul/jwt-hack

GitHub: hahwul/jwt-hack

一款功能全面的 JWT/JWE 安全测试工具,支持编解码、签名验证、密钥破解、攻击载荷生成和漏洞扫描。

Stars: 972 | Forks: 119

DevSecOps Logo

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://static.pigsec.cn/wp-content/uploads/repos/2026/03/14c451bcee210057.svg)](https://github.com/hahwul/jwt-hack/graphs/contributors)
标签:CVE, DevSecOps, Docker, JSON Web Token, JWT, Rust, 上游代理, 令牌攻击, 可视化界面, 安全防御评估, 攻击路径可视化, 数字签名, 编码解码, 网络安全, 网络流量审计, 请求拦截, 通知系统, 通知系统, 通知系统, 隐私保护, 高并发, 黑客工具