JWT可能存在的漏洞(基础版)

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注入......

        

CTF——Node.js——前端JWT登录安全-伪造admin实现get flag 。

推荐:

小迪安全v2023 javaWeb项目_webgoat靶场2023-CSDN博客

https://www.bilibili.com/read/cv14490694/

    

  • 38
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值