打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JWT越权原理与利用复现总结

免责声明

本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。

如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。

文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。

01

什么是JWT

JSON Web Token(JSON Web令牌)是一种跨域验证身份的方案。JWT不加密传输的数据,但能够通过数字签名来验证数据未被算改常用于分布式站点的单点登录。JWT的声明一般被用在客户端与服务端之间传递身份认证信息,便于向服务端请求资源。

1、用户端登录,用户名和密码在请求中被发往服务器。

2、(确认登录信息正确后)服务器生成JSON头部和声明,将登录信息写入JSON的声明中(通常不应写入密码,因为JWT是不加密的),并用secret用指定算法进行加密,生成该用户的JWT。此时,服务器并没有保存登录状态信息。

3、服务器将JWT(通过响应)返回给客户端。

4、用户下次会话时,客户端会自动将JWT写在中HTTP请求头部的Authorization字
段中。

5、服务器对JWT进行验证,若验证成功,则确认此用户的登录状态。

6、服务器返回响应。

02

结构组成

JWT分为三部分:头部(Header)、声明(Claims)、签名(Signature),三个部分以英文句号隔开。JWT内容以Base64URL进行了编码。

03

环境搭建

这里使用Webgoat

3.2 部署webgoat

https://github.com/WebGoat/WebGoat/releases/tag/v8.2.2

需要JDK高版本,这里用JDK17

输入命令 java -jar webgoat-server-8.8.8.jar启动

访问127.0.0.1:8080/WebGoat

04

JWT伪造攻击

找到靶场

尝试更改您收到的令牌并通过更改令牌成为管理员用户,一旦您成为管理员,就会重置投票

4.1 复现

可以看到我们现在的用户是tom用户

点击重置并抓包
数据包中使用JWT作身份验证

抓取返回包提示只有管理员才有重置权限

将那段Cookie中的JWT字段解密一下这里使用Burp商店自带的JWT解密

将false改为true发包测试

提示签名不对
将签名算法HS512改为none
因为签名算法为空,所以JWT第三部分签名部分直接去掉

放包
成功重置。

05

JWT身份验证攻击

5.1 复现

JWT密钥爆破攻击

将该JWT数据解密

https://jwt.io/ 在线转化网址
将username改为WebGoat 将exp字段改大

爆破密钥
用hashcat爆破
https://github.com/hashcat/hashcat

hashcat -m 16500 jwt.txt -a 3 dict.txt
  • -m 16500:这里的16500对应的就是JWT的爆破

  • -a 3:代表蛮力破解

  • -w 3:可以理解为高速破解,就是会让桌面进程无响应的那种高速(可省略)

  • jwt.txt:要求破解的JWT文件

  • dict.txt:字典文件

爆破出密钥之后,替换密钥生成新JWT

5.2 靶场二

通过修改令牌让tom进行付款

点击checkout抓包

看到Authorization字段为空

查看日志

里面出现JWT字段

解密

修改字段

成功让tom购买

JWT不仅可以验证身份还可以传输数据,因此JWT还可以结合SQL注入进行攻击

06

JWT结合SQL注入

让Jerry越权删除Tom
点击删除抓包

复制JWT查看内容

通过查询源码可以看到查询sql语句

构造sql注入语句

hacked' UNION select 'delete' from INFORMATION_SCHEMA.SYSTEM_USERS --

同时通过源码,可以看到密钥在用于检查 JWT 声明之前已进行 base64 解码,因此我们反推,在数据库中存储的是经过base64编码的。
对delete进行base64编码后,新sql语句为

hacked' UNION select 'ZGVsZXRl' from INFORMATION_SCHEMA.SYSTEM_USERS --

修改JWT内容

eyJ0eXAiOiJKV1QiLCJraWQiOiJoYWNrZWQnIFVOSU9OIHNlbGVjdCAnWkdWc1pYUmwnIGZyb20gSU5GT1JNQVRJT05fU0NIRU1BLlNZU1RFTV9VU0VSUyAtLSIsImFsZyI6IkhTMjU2In0.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJpYXQiOjE1MjQyMTA5MDQsImV4cCI6MTY5ODkwNTMwNCwiYXVkIjoid2ViZ29hdC5vcmciLCJzdWIiOiJUb21Ad2ViZ29hdC5jb20iLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoiVG9tQHdlYmdvYXQuY29tIiwiUm9sZSI6WyJDYXQiXX0.CA6yHxOh0CtFrM1w5-nENuaqSeqnOR_muaJi-bFbbrI

替换发包
成功删除tom

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
JSON Web Token 入门教程
java开发中JWT、JWE、JWS 、JWK 都是干啥的
Restful安全认证及权限的解决方案
什么是 JSON Web Token
干货 | JWT渗透姿势一篇通
深入解析 MQTT 中基于 Token 的认证和 OAuth 2.0
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服