JSON Web Tokens攻击漏洞手法

2024-04-26 12:20

本文主要是介绍JSON Web Tokens攻击漏洞手法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        身份验证和授权是任何应用程序的关键组件。人们已经开发了各种标准和框架来促进此类组件的开发并使应用程序更加安全。其中,JSON Web Tokens (JWT) 多年来已成为流行的选择。

        JSON Web 令牌是一种开放的行业标准 RFC 7519 方法,用于在两方之间安全地发送数据。它们包含以 JSON 格式编码的信息(声明)。这些声明有助于相关各方之间交换具体细节。可以使用数字签名来验证和信任所包含的信息

JWT 身份验证示例

        当用户尝试登录 Web 应用程序时,Web 服务器会验证用户的凭据并返回包含所有相关数据的 JWT:用户的身份和授权详细信息。

        在后续请求中,客户端包含 JWT。服务器验证令牌的签名以确保其未被篡改。在实施此验证过程中,设计问题可能会使网站容易受到攻击。

JWT 101

        JWT 由三部分组成:标头、有效负载和签名(也称为 JSON Web 签名 (JWS))。

        JWT 的标头段包含有关签名算法和令牌类型的信息。alg参数指定用于创建签名的加密算法 JWT 最常使用以下算法之一进行签名:  HS256(使用 SHA256 的 HMAC)和 RS256(使用 SHA256 的 RSA)。

JWT 的有效负载段包含通常针对用户的注册声明或识别信息。

        签名段取决于标头段中定义的算法。它由 Base-64 URL 编码的标头和有效负载段组成,使用密钥进行签名并进行哈希处理。

        对于使用 HMAC 的对称签名算法(例如 HS265),私钥在所有参与服务器之间共享。使用相同的私钥生成签名并验证传入 JWT 的签名。

        对于使用 RSA 的非对称签名算法(例如 RS256),JWT 签名是使用私钥生成的,服务器可以使用公钥对其进行验证。

JWT 攻击

        JWT 攻击旨在通过伪造 JWT 来冒充其他用户,从而绕过身份验证和访问控制。为了实现这一点,他们通常利用签名验证机制中的实现缺陷。

未经验证的无效签名

        第一个陷阱是服务器根本不实现签名验证。所有任意签名都会被接受,并且服务器信任所有伪造的 JWT。

没有签名的 JWT

        在这种情况下,该 alg 参数设置为 none,表示所谓的“不安全的 JWT”。大多数服务器会拒绝没有签名的令牌,但如果过滤依赖于字符串比较,有时可以使用经典的混淆技术(例如混合大小写和意外编码)来绕过它。

空密码

        某些对称签名算法(例如 HS256)使用任意独立字符串作为密钥。大多数实现此功能的库将使用空字符串作为默认密码。当然,如果开发人员在实现 Web 应用程序时忘记更改此默认值,服务器也会接受使用空字符串签名的伪造 JWT。

CVE-2022-21449

        2022 年,人们发现 Java 版本 15、16、17 和 18 包含一个严重错误,也称为CVE-2022-21449。此漏洞允许攻击者伪造具有服务器可接受的特定值的 ECDSA 签名。

        这也可以通过 JWT 签名来利用。攻击者可以指定 ECDSA 算法:alg: "ES256"并将预定义签名附加到 JWT。Web 服务器将成功验证签名。

通过 JWK 注入自签名 JWT

        JSON Web 签名标准RFC 7515定义了一个可选标头参数,服务器可以使用该参数以 JWK ( RFC 7517 ) 格式jwk嵌入自己的 RSA 公钥。一些配置错误的服务器将使用嵌入在 JWT 中的公钥来验证签名,而不是使用自己的一组白名单公钥。这允许攻击者对伪造的 JWT 进行自签名,并在标头中包含用于对 JWT 进行签名的匹配公钥。

这篇关于JSON Web Tokens攻击漏洞手法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937570

相关文章

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json

构建高性能WEB之HTTP首部优化

0x00 前言 在讨论浏览器优化之前,首先我们先分析下从客户端发起一个HTTP请求到用户接收到响应之间,都发生了什么?知己知彼,才能百战不殆。这也是作为一个WEB开发者,为什么一定要深入学习TCP/IP等网络知识。 0x01 到底发生什么了? 当用户发起一个HTTP请求时,首先客户端将与服务端之间建立TCP连接,成功建立连接后,服务端将对请求进行处理,并对客户端做出响应,响应内容一般包括响应