文章总结: JWT五大攻击面:1.利用未禁用alg=none且保留末尾句点绕过签名直接越权;2.用jwt_tool爆破HS256弱密钥;3.把RS256改为HS256再用服务端公钥签名实现算法混淆;4.操纵kid参数路径遍历加载/dev/null等空密钥;5.测试与生产环境复用密钥导致JWT跨环境劫持。防御需禁用none、强制算法白名单、密钥轮换、环境隔离、kid校验与密钥强度加固。 综合评分: 92 文章分类: WEB安全,漏洞分析,渗透测试,红队,安全开发
JWT漏洞原理、攻击、防御全解析
原创
01iver Sec 01iver Sec
01iver的安全小圈
2026年1月20日 17:00 北京
你试过挖掘 JSON Web Token(JWT)漏洞吗?
分享 5 个测试思路👇
- 将算法(alg)改为
"none",移除签名部分,但保留末尾的英文句点 - 执行命令
jwt_tool <JWT> --crack -d <wordlist>爆破弱密钥 - 将算法从
RS256改为HS256,再使用服务端公钥进行签名 - 操纵密钥 ID(kid)参数:尝试路径遍历攻击,例如构造
"kid": "../../dev/null" - 在不同环境(测试环境 vs 生产环境)之间复用 JWT。这些环境可能使用相同密钥,攻击者可借此接管生产环境账户💥
逐条技术详解
JWT 的结构为 Header.Payload.Signature(三段式,用英文句点分隔),其核心安全依赖于签名验证和算法配置,以下 5 种思路均是利用 JWT 的配置缺陷或设计逻辑漏洞进行攻击。
- 1.算法改为
none+ 保留末尾句点
-
原理
:JWT 支持
none算法(无签名模式),本意是用于调试,但部分服务端未禁用该算法,且验证逻辑存在缺陷 —— 只检查 JWT 的结构格式,不验证签名有效性。 -
操作关键
:移除
Signature段后,必须保留末尾的句点,使 JWT 结构维持Header.Payload.的格式。若缺少句点,服务端会判定 JWT 格式非法,攻击失败。 -
危害
:攻击者可随意篡改
Payload中的核心信息(如用户 ID、权限等级),且无需签名即可通过验证,直接越权访问。
2.jwt_tool爆破弱密钥
-
jwt_tool:一款开源的 JWT 安全测试工具,支持爆破、篡改、算法切换等操作
-
<JWT>:待测试的 JWT 字符串
-
--crack:指定爆破模式
-
-d <wordlist>:指定字典文件路径
-
适用场景
:JWT 采用对称加密算法(如
HS256)时,签名和验证使用同一个密钥。若密钥强度不足(如弱口令、默认密钥),可通过字典爆破获取。 -
命令解析
:
-
危害
:获取密钥后,攻击者可伪造任意内容的 JWT,完全控制目标账户或权限。
3.RS256转HS256算法混淆攻击
-
RS256:非对称加密算法,私钥签名,公钥验证,私钥由服务端严格保管
-
HS256:对称加密算法,同一密钥签名 + 验证
-
算法区别
-
攻击原理
:部分服务端未限制可使用的算法,攻击者可修改
Header中的alg字段为HS256,并使用服务端的公钥作为对称密钥对 JWT 进行签名。 -
验证逻辑缺陷
:服务端若未校验算法一致性,会默认使用配置的公钥去验证
HS256签名,而公钥是公开可获取的,最终导致签名验证通过。 -
危害
:无需获取私钥即可伪造 JWT,突破非对称加密的安全防护。
4.kid参数路径遍历攻击
-
/dev/null是系统空设备文件,内容为空
-
服务端解析该参数时,会向上遍历目录并尝试读取
/dev/null作为密钥 -
若服务端验证逻辑存在缺陷,会将空内容作为密钥,攻击者可使用空密钥签名 JWT 以通过验证。
-
kid参数作用:
kid(Key ID)是 JWTHeader中的可选字段,用于标识服务端应使用哪一个密钥验证签名(适用于服务端配置多套密钥的场景)。 -
攻击原理
:若服务端未对
kid参数做输入校验,攻击者可构造路径遍历 Payload,诱导服务端加载非预期的 “密钥文件”。 -
案例解析
:构造
"kid": "../../dev/null"(类 Unix 系统环境) -
拓展场景
:还可尝试构造
kid=../../etc/passwd等路径,尝试读取系统敏感文件。
- 5.跨环境 JWT 复用攻击
-
攻击前提
:企业的测试环境(staging) 和生产环境(prod) 共用同一套 JWT 密钥(开发人员为了方便,常复用密钥)。
-
攻击流程
:攻击者在测试环境注册账户并获取 JWT,或篡改测试环境 JWT 提升权限,再将该 JWT 直接用于生产环境的接口请求。
-
危害
:生产环境的服务端会用相同密钥验证 JWT 有效性,攻击者可直接接管生产环境的高权限账户(如管理员账户),造成核心业务数据泄露或系统被控制。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:01iver的安全小圈 01iver Sec 01iver Sec《JWT漏洞原理、攻击、防御全解析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论