JWT漏洞学习

一、JWT是什么

JWT(JSON Web Token),用于在网络应用环境间安全传递声明。通常用于身份验证和信息交换,因其紧凑、自包含且易于传输的特性而被广泛使用。

JWT 由三部分组成,用点号.分隔:Header(头部)、Payload(负载)、Signature(签名)

1、JWT工作流程

用户登录:客户端发送凭据(如用户名和密码)到服务器。

生成 JWT:服务器验证凭据后,生成 JWT 并返回给客户端。

存储 JWT:客户端存储 JWT(通常在 localStorage或 sessionStorage中)。

发送 JWT:客户端在后续请求的 Authorization头中携带 JWT。

验证 JWT:服务器验证 JWT 的签名和有效期,确认请求合法性。

2、JWT的一些特点

(1)JWT 的优点

无状态:服务器无需存储会话信息,所有数据都在 JWT 中。

跨域支持:适用于分布式系统和跨域认证。

安全性:通过签名确保数据完整性和真实性。

(2)JWT 的缺点

无法撤销:一旦签发,JWT 在有效期内无法撤销,除非设置较短的有效期或使用黑名单。

存储问题:JWT 存储在客户端,可能面临 XSS 攻击风险。

数据暴露:负载中的数据是 Base64 编码,非加密,敏感信息需额外加密。

二、JWT靶场练手

靶场地址:https://portswigger.net/web-security/all-labs#jwt

1、Lab: JWT authentication bypass via unverified signature

实验目标:请修改会话令牌以访问/admin的管理面板,然后删除用户carlos。

(1)登录靶场提供的账号/密码wiener:peter

(2)点击My account,进行抓包,发现cookie是一串ey开头的代码,并用点号.隔开

(3)jwt解码,观察内容

jwt解码网址:https://jwt.io/

(4)回到burp,选中jwt的payload部分,在右侧将wiener修改为administrator,点击Apply change

(5)请求部分改为/admin,并观察响应包,发现成功

(6)再次把请求部分改为/admin/delete?username=carlos,实验解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值