825 B
825 B
JWT 有哪些漏洞
1. 算法混淆攻击
- 原理:服务器使用 RS256(非对称加密)验证令牌,但攻击者将算法头部改为 HS256(对称加密),并利用服务器公钥作为 HMAC 密钥签名令牌。
- 利用条件:服务器未严格校验算法类型,且公钥可获取
- 攻击步骤:
- 获取服务器公钥(通常从
/jwks.json或重复使用 SSL 证书) - 修改 JWT 头部:
"alg":"HS256" - 使用公钥作为密钥生成 HMAC 签名
- 服务器用公钥解密(误认为是 HMAC 密钥)→ 验证通过
- 获取服务器公钥(通常从
2. none 算法攻击
- 原理:将
alg头部设为none,使服务器跳过签名验证 - 利用:直接删除签名部分,修改 Payload 内容
- 防御:现代 JWT 库默认禁用
none,但配置错误可能启用