JWT 攻防实战:混淆、破解与红队利用技术详解
JWT 攻防实战:混淆、破解与红队利用技术
破解、篡改、利用——JWT 不仅是令牌,更是红队的游乐场。
什么是 JWT?
JWT(JSON Web Token)是一种紧凑的 URL 安全方法,用于在双方之间传递声明信息,主要用于无状态认证。JWT 通常通过 Cookie、HTTP 头部或本地存储传递。
JWT 包含 3 个 Base64 编码部分:
示例:
结构解析:
头部:指定算法(如 HS256)
载荷:包含用户名、角色等声明
签名:确保头部和载荷的完整性
JWT 常用于 API 认证和会话管理。服务器在登录后颁发令牌,客户端在后续请求中携带该令牌。
JWT 混淆技术
虽然 JWT 可通过 Base64 解码阅读,但攻击者或开发人员可能通过混淆增加复杂性或安全性。
混淆目的:
绕过安全控制
隐藏内部声明(如 role=admin)
防止简单检查
常用混淆手法:
JWT 破解技术
根据实现方式的不同,存在多种 JWT 破解方法。
HMAC 密钥暴力破解(HS256)
当 JWT 使用弱密钥签名时:
常见弱密钥:
admin
password123
jwtsecret
仅适用于对称算法(HS256)且密钥可猜测的情况。
算法混淆攻击:RS256 转 HS256
如果 JWT 使用 RS256(非对称)签名,但服务器未正确验证算法,可将其改为 HS256 并用公钥签名:
public.pem 文件通常以 PEM 格式存储公钥。CVE-2018-0114 使此攻击广为人知。
none 算法攻击
早期 JWT 库允许使用{"alg":"none"}
,并完全忽略签名。如果服务器接受此类令牌:
移除签名后重放令牌,即可实现"登录"。
声明伪造
手动修改载荷为"admin": true
,并用破解的密钥重新签名:
JWT 提取与利用挑战
Cookie 存储场景:
HTTP 请求中难以直接查看
需要 BurpSuite 拦截提取
脚本需具备 Cookie 容器感知能力
本地存储场景:
需要 XSS 从浏览器窃取
无法通过纯服务端枚举访问
强签名防护:
RS256 配合密钥轮换
HMAC 密钥无法破解
短期有效性:
短有效期限制重放攻击
需在有效期内拦截令牌
真实靶场实践
TryHackMe: JWT 实验舱
教授 none 算法攻击、弱密钥破解
修改载荷提升权限
推荐使用 BurpSuite 的 JWT 编辑器扩展
HTB: "JWT 密钥"挑战
在 JavaScript 中查找泄露的密钥
修改令牌劫持管理员会话
自建实验环境
使用 Node.js 的 jsonwebtoken 库
设置弱密钥测试 none 算法绕过
防御措施:如何真正保护 JWT
始终使用可信库在服务端验证令牌。
快速参考手册
本文原载于 https://aenosh-rajora.gitbook.io,2025 年 9 月 13 日发布更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码

评论