hi!!!
1.什么是JWT?
*Json web Token,简称JWT,可以类似于升级版的token。*
通过数字签名的方式,以JSON对象为载体,在不同的服务终端之间安全的传输信息。
2.JWT有什么用?
JWT通常用于Web应用程序中的身份验证和授权目的。
一旦用户登录,后续每个请求都将包含JWT,系统在每次处理用户请求之前,都要先进行JWT安全校验,通过之后再进行处理。
3.JWT的格式。
JWT由Header、Playload、Signature三部分组成,由.拼接。****令牌最终的格式像这样: abc.def.xyz。
Header:
报头通常由两部分组成: Token的类型(即 JWT)和所使用的签名算法(如 HMAC SHA256或 RSA)。
Playload:
Token的第二部分是有效负载,其中包含声明。
声明是关于实体(通常是用户)和其他数据的语句。
有三种类型的声明: registered claims, public claims, and private claims。
Signature:
要创建Signature,您必须获取编码的标头(header)、编码的有效载荷(payload)、secret、标头中指定的算法,并对其进行签名。
4.JWT常见的漏洞类型。
**** 1. JWT身份验证:****
**** - 生成Token:使用JWT库(如jjwt)在服务器端生成包含用户信息的Token。****
**** - 客户端请求:客户端(如浏览器)向服务器端发送请求时,携带生成的Token。****
**** - 服务器验证:服务器端接收到请求后,验证Token的有效性,并提取Token中的用户信息。****
**** 2. 安全访问控制:****
**** - 权限控制:根据用户角色和权限设置,对用户访问的资源进行控制。****
**** - 资源过滤:对请求中的资源(如文件、数据库等)进行过滤,防止XSS攻击和SQL注入等安全问题。****
**** - 异常处理:对访问控制过程中出现的异常进行处理,记录日志,方便排查问题。****
**** 3. 身份攻击组件:****
**** - 防止中间人攻击:使用HTTPS协议,确保数据传输的安全性。****
**** - 防止重放攻击:在Token中添加过期时间,防止攻击者重放Token进行非法访问。****
**** - 防止拒绝服务攻击:对请求频率进行限制,防止攻击者通过大量请求占用服务器资源。****
5.JWT漏洞利用。
**** 空加密:****
**** 登录后获得Cookie中的JWT。****
**** Alg:none****
**** Payload:administrator(别的也行!!!)****
**** base64编码后替换原来的部分,然后删除签名部分,记得保留点号,保证格式正确,然后就按照第一个实验中的步骤删除用户即可。****
**** 弱密钥加密:****
**** 成功登录获得到JWT后进行解码查看,可以看到JWT使用的HS256。****
**** 可以使用python脚本,等工具尝试对密钥进行猜解。****
**** Kid注入:****
**** 通过kid可以进行rce 、 union注入......****
![](https://i-blog.csdnimg.cn/direct/b205343c9dfa442c9466385a500c7f18.png)
CTF——Node.js——前端JWT登录安全-伪造admin实现get flag 。
推荐:
小迪安全v2023 javaWeb项目_webgoat靶场2023-CSDN博客
https://www.bilibili.com/read/cv14490694/
版权归原作者 火红的小辣椒 所有, 如有侵权,请联系我们删除。