Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
jwt_tool — :snake: 用于测试、调整和破解 JSON Web Tokens 的工具包 | Kitploit
工具/GitHubGitHub/ticarpi/jwt_tool
漏洞扫描器Web安全模糊测试密码学CTF渗透测试
GitHubticarpi/jwt_tool

jwt_tool

🐍 用于测试、调整和破解 JSON Web Tokens 的工具包

查看仓库
6.7k8121年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

JSON Web Token 工具包 v2

jwt_tool.py 是一个用于验证、伪造、扫描和篡改 JWT(JSON Web Token)的工具包。

jwt_tool version python version

logo

其功能包括:

  • 检查令牌的有效性
  • 测试已知漏洞利用:
    • (CVE-2015-2951) alg=none 签名绕过漏洞
    • (CVE-2016-10555) RS/HS256 公钥不匹配漏洞
    • (CVE-2018-0114) 密钥注入 漏洞
    • (CVE-2019-20933/CVE-2020-28637) 空白密码 漏洞
    • (CVE-2020-28042) 空签名 漏洞
    • (CVE-2022-21449) Psychic Signature ECDSA 漏洞
  • 扫描错误配置或已知弱点
  • 模糊测试声明值以触发意外行为
  • 测试 secret/密钥文件/公钥/JWKS 密钥的有效性
  • 通过高速字典攻击识别弱密钥
  • 伪造新的令牌头部和载荷内容,并使用密钥或通过其他攻击方法创建新签名
  • 时间戳篡改
  • RSA 和 ECDSA 密钥生成,以及重建(从 JWKS 文件)
  • 对所有攻击进行速率限制
  • ……以及更多功能!

适用人群

本工具专为渗透测试人员编写,他们需要检查所使用令牌的强度及其对已知攻击的敏感性。工具提供了多种篡改、签名和验证选项,帮助深入探究某些 JWT 库中存在的潜在弱点。
它同样对CTF 挑战者非常有用——因为目前的 CTF 似乎对 JWT 情有独钟。
对于那些在项目中使用 JWT,并希望在使用伪造令牌时测试稳定性和已知漏洞的开发人员来说,它也很有用。


运行要求

本工具使用常用库原生编写,基于 Python 3(3.6+ 版本),但各种加密功能(以及整体美观性/可读性)确实需要安装一些常见的 Python 库。
(旧版分支提供了适用于需要者的 Python 2.x 旧版本,但该版本不再受支持或更新)


安装

Docker

使用 jwt_tool 的首选方式是使用托管在 Dockerhub 的官方 jwt_tool docker 镜像
运行它的基本命令如下:
运行 jwt_tool 的基本命令:
docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

使用上述命令后,你可以像平常一样附加任何其他参数。
请注意,当前工作目录中的本地文件将被映射到 docker 容器的 /tmp 目录,因此你可以使用该绝对路径在参数中引用它们。
例如:
/tmp/localfile.txt

手动安装

安装只需下载 jwt_tool.py 文件(或 git clone 仓库)。
(如果你想将其添加到你的 $PATH 并从任何位置调用,还需要 chmod 该文件。)

$ git clone https://github.com/ticarpi/jwt_tool
$ python3 -m pip install -r requirements.txt

首次运行时,该工具将生成一个配置文件、一些实用文件、日志文件,以及一套各种格式的公钥和私钥。

自定义配置

  • 为充分利用扫描选项,强烈建议将自定义生成的 JWKS 文件复制到可通过 URL 远程访问的位置。然后将该地址作为 "jwkloc" 值存储在 jwtconf.ini 中。
  • 为了捕获外部服务交互(如 DNS 查询和 HTTP 请求),请将你的 Burp Collaborator(或其他替代工具如 RequestBin)的唯一地址作为 "httplistener" 值放入配置文件中。
    查看配置文件中的其他选项以自定义你的体验。

Windows 中的颜色问题

要修复 Windows cmd/Powershell 中损坏的颜色:请取消注释 jwt_tool.py 中的以下两行(删除每行开头的 "# ")
你还需要安装 colorama:python3 -m pip install colorama

root@kitploit:~
# import colorama
# colorama.init()

使用方法

第一个参数应为 JWT 本身(除非在 header 或 cookie 值中提供)。不提供其他参数将显示解码后的令牌值供查看。
$ python3 jwt_tool.py <JWT>
或使用 Docker 基本命令:
$ docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

该工具包将验证令牌并列出 header 和 payload 的值。

附加参数

许多附加参数会直接将你带到相应功能,并返回一个可用于测试的令牌。
例如,要篡改现有令牌,请运行以下命令:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -T

许多选项需要附加值来设置选项。
例如,要运行特定类型的漏洞利用,你需要选择 eXploit(-X)选项并选择漏洞(此处使用 "a" 表示 alg:none 漏洞利用):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -X a

额外参数

某些选项(例如验证令牌)需要提供额外的参数/文件(此处以 PEM 格式提供公钥):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -V -pk public.pem

将令牌发送到 Web 应用程序

所有模式现在都允许将令牌直接发送到应用程序。
你需要指定:

  • 目标 URL(-t)
  • 除了目标 URL 之外,你可以将 HTTP 请求放入文件中,并通过 -r 引用该文件。这会自动填充 headers、cookies 和 POST 数据,因此这是推荐选项
  • 应用程序需要的请求 header(-rh)或请求 cookies(-rc)(至少一个必须包含令牌) *(可选)任何 POST 数据(当请求为 POST 时) *(可选)任何其他 jwt_tool 选项,例如模式或篡改/注入选项 *(可选)canary 值(-cv)——你期望在成功使用令牌时看到的文本值(例如 "Welcome, ticarpi")
    示例请求可能如下所示(使用强制错误扫描模式):
    $ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -rh "Origin: null" -cv "Welcome" -M er

将显示请求的各种响应:

  • 响应代码
  • 响应大小
  • 唯一请求跟踪 ID(用于日志记录)
  • 使用的模式/选项

常用工作流程

以下是对 JWT 实现进行基本评估的快速演练。如果这些选项没有成功,请深入研究其他模式和选项,以寻找新的漏洞(或零日漏洞!)。

侦察:

读取令牌值,以了解应用程序中预期的声明/值:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw

扫描:

使用提供的令牌直接对应用程序运行 Playbook 扫描,以寻找常见错误配置:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -M pb

漏洞利用:

如果发现任何成功的漏洞,请更改相关声明以尝试利用它(此处使用 Inject JWKS 漏洞利用并注入新用户名):
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin

模糊测试:

通过测试意外值和声明来深入挖掘,识别意外应用行为,或对编程逻辑或令牌处理发起攻击:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -I -hc kid -hv custom_sqli_vectors.txt

回顾:

通过查询日志来回顾任何成功的漏洞利用,以读取有关请求及...的更多数据:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin


帮助

要获取选项列表,请调用 usage 函数:有些选项(如验证令牌)需要提供额外的参数/文件:
$ python3 jwt_tool.py -h

更详细的用户指南可在wiki 页面找到。


JWT 攻击 Playbook——新的 wiki 内容!

playbook_logo

前往 JWT 攻击 Playbook 详细了解什么是 JWT、它们的作用,以及如何全面测试其漏洞、常见弱点和意外编码错误的完整工作流程。


提示

在 Burp Search 中查找 JWT 的正则表达式
(确保勾选 '区分大小写' 和 '正则表达式' 选项)
[= ]eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9._-]* - url 安全 JWT 版本
[= ]eyJ[A-Za-z0-9_\/+-]*\.[A-Za-z0-9._\/+-]* - 所有 JWT 版本(误报可能性更高)


延伸阅读

  • JWT 攻击 Playbook (https://github.com/ticarpi/jwt_tool/wiki)——全面的 JWT 测试方法论

  • JWT 极佳入门 - https://jwt.io/introduction/

  • 本工具的许多初始灵感来自 Tim McLean 发现的漏洞。
    在此查看他关于 JWT 弱点的博客:https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/

  • Pentesterlab (https://www.pentesterlab.com) 提供了大量用于测试 JWT 漏洞的练习。如果你对 Web 应用渗透测试感兴趣,我强烈推荐 PRO 订阅。

    请注意: 如果正确使用,本工具包将在几秒钟内解决大多数 Pentesterlab JWT 练习,但我强烈鼓励你自己完成这些练习,找出结构和弱点。毕竟,学习才是最重要的……

下载工具