前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >篡改JWT实现账户劫持

篡改JWT实现账户劫持

作者头像
FB客服
发布2020-06-03 11:24:13
1.7K0
发布2020-06-03 11:24:13
举报
文章被收录于专栏:FreeBuf

今天分享的这篇Writeup是关于JSON Web Tokens (JWT)的,其利用点是可以绕过用户邮件验证码确认,实现密码重置从而达到账户劫持目的。

JSON Web Token,JWT

JSON Web Token (JWT) 是基于RFC 7519标准定义的,以JSON形式在网络应用间安全传递信息的一种紧凑而独立的方法,尤其适用于分布式站点的单点登录(SSO)场景。JWT携带的属性信息通过HMAC算法的电子签名方式被用来在客户端和服务端之间进行身份验证,其默认的签名算法为HMAC SHA256。

JWT的结构

JWT主要由三个部分组成,各部分之间为.分开,它们分别是: Header(头部) Payload(负载) Signature(签名)

样式为:

xxxxx.yyyyy.zzzzz

无需token进行邮件地址验证

我发现的漏洞是这样的。通过利用目标系统的邀请功能并修改其中携带的JWT token信息,无需点击确认链接,即可实现对用户邮件地址和身份的验证。假设我有一个邮箱地址是attacker@attacker.com,然后我在目标网站的邀请功能中发起对该邮箱地址的一个邀请操作,接下来,我登录该邮箱attacker@attacker.com后,会在收件箱中收到一个URL形式携带JWT的确认链接。该过程在Burp中的响应如下:

我在收件箱中收到的URL形式携带JWT的确认链接如下:

链接后即是一串JWT token,通过网站https://jwt.io/,解码该JWT token后的结果如下:

到此,我第一时间想到的就是尝试用上述邀请功能邀请目标网站管理员的对应邮箱admin@company.com,操作之后,Burp中的响应消息如下:

然后,在收件箱中同样也收到了一个携带JWT的URL链接,通过JWT编码解码操作,我尝试把其中我自己邀请人的attacker@attacker.com更改为admin@company.com,把其中的id也更改为admin的ID,并把其时间戳(timestamp)即“created date”:”xxxxxxxx”也做了相应修改,然后再次通过编码生成新的JWT。利用该JWT我就可以来确认用户身份,并重置与邮箱admin@company.com对应的公司管理员用户密码。

因此,后续可以利用该JWT的延伸凭据信息,去登录目标网站公司如业务支持等不同业务端的SSO接口。

重置其他用户密码

该方法由于需要知道对方受害者用户的ID号信息,因此并不适用于任意用户,利用方式还是存在一定难度,但至少我可以通过注册两个用户的方式来验证漏洞。就比如用其它邮箱注册了一个测试用户(假设为Victim),从账户信息中可以看到其用户id为:jyAzV7KhT,然后我用之前我的attacker@attacker.com发起密码重置请求,然后从我的邮箱attacker@attacker.com中收到一个携带JWT的重置链接,如下:

把该JWT放到https://jwt.io/的JWT解码工具中解密,在右边Decode区域得出具体的JWT三部分内容,接着,把其中的id更改为Victim账户的id:jyAzV7KhT。这样就生成了Victim账户的密码重置JWT了,把它放入上述URL确认链接之后,就能更改Victim账户密码了!

漏洞原因

目标网站在客户端进行JWT的生成,这样一来,就可导致JWT可被客户端篡改的风险,安全的方式是把JWT放到服务端生成。

技术参考

https://jwt.io/introduction/ https://hackerone.com/reports/638635

*参考来源:securitybreached,clouds 编译整理,转载请注明来自 FreeBuf.COM

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JSON Web Token,JWT
    • 无需token进行邮件地址验证
    • 重置其他用户密码
    • 漏洞原因
    • 技术参考
    相关产品与服务
    验证码
    腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档