
jwt

jwt
与普通Tokn一样都是访问资源的令牌,都可以记录用户信息,都是只有验证
成功后才可以获取信息。
不同的是普通Token.服务端验证token信息要进行数据的查询操作;JWT验证token
信息就不用,在服务端使用密钥校验就可以,不用数据库的查询。
用途:
身份认证:用户登录后,服务器生成JWT,后续请求携带此token来证明身份。
信息交换:在不同系统间安全地传递信息。
结构: JWT由三部分组成,用点(.)分隔:
- Header(头部):包含token类型和使用的加密算法。
- Payload(载荷):包含声明(claims),如用户ID、过期时间等。
- Signature(签名):用于验证token未被篡改。
安全性:
- JWT本身不加密数据,但可以被签名。
- 敏感信息不应放在payload中,除非使用加密。
示例流程:
- 用户登录 -> 服务器验证凭证 -> 生成JWT -> 返回给客户端
- 客户端存储JWT(通常在localStorage或cookie中)
- 后续请求携带JWT -> 服务器验证JWT -> 允许访问资源
1 | import jwt #导入jwt 可以pip install pyjwt |
网站
1 | jwt.io |
jwt利用方式
1 | https://xz.aliyun.com/t/6776?time__1311=n4%2BxnD0DRDyDgDIoEDlhAeK2EmKG%3DDc0gYD&alichlgref=https%3A%2F%2Fwww.google.com%2F |
有缺陷的身份验证 修改普通用户为管理员
弱密钥破解
1 | hashcat -a 0 -m 16500 jwt 字典 cpu破解 |
参数头注入
1 | 根据 JWS 规范,只有 alg 标头参数是强制的。但实际上,JWT 标头(也称为 JOSE 标头)通常包含其他几个参数。攻击者特别感兴趣的是以下内容。 |
待续
利用工具
1 | https://github.com/ticarpi/jwt_tool |