关于JSON Web Token的攻击


详细个人博客内容见https://zzh.pub

Json Web Token

Json Web Token简称JWT,是基于JSON开发标准与token鉴权机制将验证信息存放在客户端,通过请求附加验证信息向服务器请求验证并返回数据的认证方法。其对分布式站点的单点登陆有较高的效率。

JWT的构成

JWT通常由header,payload,signature三部分构成,三部分通过拼接构成token。

  1. HEADER部分承载着jwt与加密算法两部分,type代表类型通常为jwt,alg代表声明的算法通常使用HS256等。
{
     'typ':'JWT',
     'alg':'HS256'  
}

如上为通常的头部信息,将上述信息经过base64加密便是token的头部分也是第一部分
2. Payload部分通常包含标准中注册的声明,公共的声明,私有的声明 。其中标注中的注册声明有iss:jwt签发者;sub:jwt所面向的用户;aud:接收jwt的一方;exp:jwt的过期时间,这个过期时间必须大于签发时间;nbf:定义在什么时间之前,该jwt都是不可用的;iat:jwt的签发时间;jti:jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击 。公共声明一般是相关业务等声明信息。私有声明即根据功能的相关自定义。上述内容经过base64加密构成token中的payload部分
3. Signature部分通常是该token的检验部分即签证信息部分,利用HEADER中的加密方式结合相关SECRET(存储在服务器端的私钥文件)进行加密构成。

对JWT的相关攻击记录

常用工具

加解密验证:https://jwt.io/
暴力破解:https://github.com/brendan-rius/c-jwt-cracker,https://github.com/jmaxxz/jwtbrute

原理

利用JWT进行身份验证的缺陷性,进行利用密钥伪造身份构造token或利用算法签名缺陷伪造进行JWT攻击。

CTF记录

通过对secret的获取是token伪造的一个关键点,一般secret在题目中常隐藏较深,通常作为判断JWT之后的首个突破点,如果对加密算法爆破失败通常需要利用题目其他信息进行发现,常见的有文件泄露,文件包含漏洞,利用其他页面信息获取等。其次多对JWT的利用多从其加密算法入手,通过对加密算法的修改,进而突破。

案例记录

Juice Shop JWT issue 1:修改alg为none
网鼎杯i_am_admin:通过低权用户登陆取得SECRET后伪造admin突破身份验证
网鼎杯mmmmy:爆破secret
b00t2root:修改私有声明
CTF论剑场:文件泄露+修改标准中注册的声明

推荐参考文章

http://www.freebuf.com/articles/web/180874.html
https://www.freebuf.com/articles/web/181261.html
https://xz.aliyun.com/t/2338
http://ctfdog.com/ctf/训练学习/ctf比赛中jwtjson-web-tokens相关学习/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值