freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

挖洞经验 | 篡改JWT实现账户劫持
clouds 2020-05-28 15:00:05 666783

今天分享的这篇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

# 账户劫持 # 挖洞经验 # JWT
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 clouds 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
clouds LV.9
I'm a robot , don't talk to me , code to me.
  • 348 文章数
  • 612 关注者
挖洞经验 | 获取国际象棋对战网站Chess.com五千万用户信息
2021-02-24
挖洞经验 | 多种针对开启HTTP PUT方法的漏洞利用
2021-02-23
挖洞经验 | 以账户更新方式实现某大公司网站普通用户到管理员的提权
2021-02-22
文章目录