JSON Web Token

JSON Web Token

0x01  JSON Web Token介绍

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

本节课中详细介绍了JSON Web Token(JWT)中的漏洞的利用。在这个程序中,JWT用于认证,登录成功后,用户将获得一个Cookie的JWT。

JSON Web Token是一种数据的存储机制,主要有加密和签名的安全机制。

JWT的格式如下:

Base64(header).Base64(payload).Base64(signature)

例如:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJsb2dpbiI6ImFhYWEiLCJpYXQiOiIxNTI1MzQyMDM3In0

表示

{"alg":"HS256","typ":"JWS"}. {"login":"aaaa","iat":"1525342037"}.网站对数据设计签名机制

第三部分是一个签名,网上说的很详细了,此处不进行说明。

0x02  JSON Web Token漏洞利用

首先设置好代理,使用BurpSuite进行抓包,然后注册一个用户,点击下方的登录,如果已经注册过了,也可以直接登录

将抓到的包转发,直到出现包含cookie的这个包

鼠标右键,点击Send to Repeater

点击go,可以在右边返回的数据包中发现正常的登录的用户aaaa

将auth的值右键发送到Decoder进行解码

分别对每一段进行Base64解码

得到如下结果

然后将编码格式HS256改为None,将用户名改为admin,然后分别进行Base64编码,并把第三部分去掉(注意不要去掉.)

得到如下结果(注意后边有个.)

把这个结果复制到Repeater中,并点击Go

可以发现右侧返回的数据包中登陆的账号已经变成了admin

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值