令牌易破解

本文详细阐述了JWT(Json Web Token)认证机制存在的安全漏洞,包括令牌简单可被爆破、密钥混淆攻击、无效签名及暴力破解密钥等问题,并提供了相应的修复建议,如使用强加密算法、保护secret不泄露等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一. 漏洞描述

二. 案例条件

三. 漏洞修复


一. 漏洞描述

       由于认证机制如cookie、token等,直接由账号密码组成、或账号密码经过简单加密生成,导致令牌简单可被爆破。

二. 案例条件

Jwt令牌

       Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

jwt由三部分组成:header、payload、sign

{"alg":"HS256","typ":"JWT"}.{"sub":"1234567890","name":"John Doe","admin":true}.L•@÷“«3±6p›ßDL±ÃpGñކáN4X{HgQ

Secret可在js搜索secret,查找密钥

1. None

{"typ":"JWT","alg":"none"}.
{"user":"admin","action":"upload"}.
[No signature!]

2. 密钥混淆攻击

       JWT最常用的两种算法是HMAC和RSA。HMAC(对称加密算法)用同一个密钥对token进行签名和认证。而RSA(非对称加密算法)需要两个密钥,先用私钥加密生成JWT,然后使用其对应的公钥来解密验证。
后端代码会使用公钥作为秘密密钥,然后使用HS256算法验证签名。由于公钥有时可以被攻击者获取到,所以攻击者可以修改header中算法为HS256,然后使用RSA公钥对数据进行签名。
当后端代码使用RSA公钥+HS256算法进行签名验证。
{"typ":"JWT","alg":"HS256"}.
{"login":"ticarpi"}.
[使用HS256签名,使用RSA公钥文件作为密钥验证。]

3. 无效签名

       当用户端提交请求给应用程序,服务端可能没有对token签名进行校验,这样,攻击者便可以通过提供无效签名简单地绕过安全机制。
{"typ": "JWT", "alg": "HS256"}.
{"user": "admin","action": "profile"}.
[新的签名]
将user修改为admin,若可成功访问,则存在漏洞

4.暴力破解密钥
        HMAC签名密钥(例如HS256 / HS384 / HS512)使用对称加密,无需在服务端进行验证,所以可在本地通过jwt破解工具对密钥进行破解

三. 漏洞修复

1、使用强加密,禁止alg为空。

2. 将secret放在后端,防止泄露。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ly4j

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值