JWT漏洞原理、攻击、防御全解析

admin 2026-01-21 00:46:41 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: JWT五大攻击面:1.利用未禁用alg=none且保留末尾句点绕过签名直接越权;2.用jwt_tool爆破HS256弱密钥;3.把RS256改为HS256再用服务端公钥签名实现算法混淆;4.操纵kid参数路径遍历加载/dev/null等空密钥;5.测试与生产环境复用密钥导致JWT跨环境劫持。防御需禁用none、强制算法白名单、密钥轮换、环境隔离、kid校验与密钥强度加固。 综合评分: 92 文章分类: WEB安全,漏洞分析,渗透测试,红队,安全开发


cover_image

JWT漏洞原理、攻击、防御全解析

原创

01iver Sec 01iver Sec

01iver的安全小圈

2026年1月20日 17:00 北京

你试过挖掘 JSON Web Token(JWT)漏洞吗?

分享 5 个测试思路👇

  1. 将算法(alg)改为"none",移除签名部分,但保留末尾的英文句点
  2. 执行命令jwt_tool <JWT> --crack -d <wordlist>爆破弱密钥
  3. 将算法从RS256改为HS256,再使用服务端公钥进行签名
  4. 操纵密钥 ID(kid)参数:尝试路径遍历攻击,例如构造"kid": "../../dev/null"
  5. 在不同环境(测试环境 vs 生产环境)之间复用 JWT。这些环境可能使用相同密钥,攻击者可借此接管生产环境账户💥

逐条技术详解

JWT 的结构为 Header.Payload.Signature(三段式,用英文句点分隔),其核心安全依赖于签名验证算法配置,以下 5 种思路均是利用 JWT 的配置缺陷或设计逻辑漏洞进行攻击。

  1. 1.算法改为none+ 保留末尾句点
  • 原理

    :JWT 支持none算法(无签名模式),本意是用于调试,但部分服务端未禁用该算法,且验证逻辑存在缺陷 —— 只检查 JWT 的结构格式,不验证签名有效性。

  • 操作关键

    :移除Signature段后,必须保留末尾的句点,使 JWT 结构维持Header.Payload.的格式。若缺少句点,服务端会判定 JWT 格式非法,攻击失败。

  • 危害

    :攻击者可随意篡改Payload中的核心信息(如用户 ID、权限等级),且无需签名即可通过验证,直接越权访问。

  1. 2.jwt_tool爆破弱密钥
  • jwt_tool

    :一款开源的 JWT 安全测试工具,支持爆破、篡改、算法切换等操作

  • <JWT>

    :待测试的 JWT 字符串

  • --crack

    :指定爆破模式

  • -d <wordlist>

    :指定字典文件路径

  • 适用场景

    :JWT 采用对称加密算法(如HS256)时,签名和验证使用同一个密钥。若密钥强度不足(如弱口令、默认密钥),可通过字典爆破获取。

  • 命令解析

  • 危害

    :获取密钥后,攻击者可伪造任意内容的 JWT,完全控制目标账户或权限。

  1. 3.RS256 转 HS256 算法混淆攻击
  • RS256

    :非对称加密算法,私钥签名,公钥验证,私钥由服务端严格保管

  • HS256

    :对称加密算法,同一密钥签名 + 验证

  • 算法区别

  • 攻击原理

    :部分服务端未限制可使用的算法,攻击者可修改Header中的alg字段为HS256,并使用服务端的公钥作为对称密钥对 JWT 进行签名。

  • 验证逻辑缺陷

    :服务端若未校验算法一致性,会默认使用配置的公钥去验证HS256签名,而公钥是公开可获取的,最终导致签名验证通过。

  • 危害

    :无需获取私钥即可伪造 JWT,突破非对称加密的安全防护。

  1. 4.kid参数路径遍历攻击
  • /dev/null

    是系统空设备文件,内容为空

  • 服务端解析该参数时,会向上遍历目录并尝试读取/dev/null作为密钥

  • 若服务端验证逻辑存在缺陷,会将空内容作为密钥,攻击者可使用空密钥签名 JWT 以通过验证。

  • kid参数作用

    kid(Key ID)是 JWT Header中的可选字段,用于标识服务端应使用哪一个密钥验证签名(适用于服务端配置多套密钥的场景)。

  • 攻击原理

    :若服务端未对kid参数做输入校验,攻击者可构造路径遍历 Payload,诱导服务端加载非预期的 “密钥文件”。

  • 案例解析

    :构造"kid": "../../dev/null"(类 Unix 系统环境)

  • 拓展场景

    :还可尝试构造kid=../../etc/passwd等路径,尝试读取系统敏感文件。

  1. 5.跨环境 JWT 复用攻击
  • 攻击前提

    :企业的测试环境(staging) 和生产环境(prod) 共用同一套 JWT 密钥(开发人员为了方便,常复用密钥)。

  • 攻击流程

    :攻击者在测试环境注册账户并获取 JWT,或篡改测试环境 JWT 提升权限,再将该 JWT 直接用于生产环境的接口请求。

  • 危害

    :生产环境的服务端会用相同密钥验证 JWT 有效性,攻击者可直接接管生产环境的高权限账户(如管理员账户),造成核心业务数据泄露或系统被控制。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:01iver的安全小圈 01iver Sec 01iver Sec《JWT漏洞原理、攻击、防御全解析》

评论:0   参与:  0