0123.我是如何通过JWT操纵非法获取组织管理面板访问权限的$$

admin 2026-01-27 14:37:16 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分享了在Bugcrowd漏洞挖掘中发现的关键JWT漏洞。作者发现系统存在算法混淆缺陷,通过将JWT签名算法从RS256修改为HS256并篡改role字段为admin,成功伪造令牌获取管理面板权限。该漏洞导致严重的权限提升与数据泄露风险,最终被定为P1级并获高额赏金。 综合评分: 90 文章分类: WEB安全,漏洞分析,SRC活动,渗透测试


cover_image

0123.我是如何通过 JWT 操纵非法获取组织管理面板访问权限的 $$

原创

Ashish Yadav Ashish Yadav

Rsec

2026年1月27日 09:31 贵州

本文章仅用网络安全研究学习,请勿使用相关技术进行违法犯罪活动。

声明:本文搬运自互联网,如你是原作者,请联系我们!

类型:JWT

大家好,

我是 Ashish Yadav,一名漏洞赏金猎人。这是我的第二篇博文。今天,我将分享我在 Bugcrowd 私有项目中发现的第一个关键漏洞。

概述

什么是 JWT?

#

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

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

JWT 的结构

JWT 的结构由三部分组成:

头部: 头部通常由两部分组成:令牌类型(即 JWT)和所使用的算法(例如 RS256、HS256)。JWT 的第一部分采用 Base64Url 编码。

{  "alg": "RS256",  "typ": "JWT"}

有效载荷: JWT(JSON Web Token)有效载荷是令牌的第二部分,它是一个 JSON 对象,包含经过 Base64Url 编码的“声明”(关于用户/数据的陈述),其中包含用户 ID、角色或过期时间等信息,这些信息对于授权至关重要,但并未加密,因此必须避免包含敏感数据,因为它很容易被读取。它与标头和签名一起,是服务器验证令牌真实性和用户权限的关键组件,无需进行数据库查询。

{  "sub": "12345",  "email": "[email protected]",  "role": "user",  "iat": 1710000000,  "exp": 1710003600}

签名: 签名用于验证 JWT 的发送者是否与其声称的身份相符,并确保消息在传输过程中未被篡改。要创建签名,需要将 Base64 编码的头部和有效载荷以及一个密钥一起,使用头部中指定的算法进行签名。

signature = sign(  base64url(header) + "." + base64url(payload),  secret_or_private_key)
![](https://mmbiz.qpic.cn/mmbiz_png/yKTOKd3ibs9ib2O41ULPLjpice7QcbW8uNpFr8jxTFOasnhgbuCHfdrkWvXAL19aiamI3hibG3srU2MnKAHFwcfKKEA/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=0)

JWT 结构

JWT 授权中的漏洞

当我开始在 Bugcrowd 上搜索一个私有程序时,侦察过程中我发现了一个子域名。假设子域名是 target.example.com。

然后,我开始在这个子域名( https://target.example.com/ )上搜索。2-3 小时内,我报告了 4 个 P4 级别的程序漏洞,然后切换到另一个程序,开始搜索。

大约在午夜到凌晨 3 点之间,我再次开始在这个子域名( https://target.example.com/ )上搜索,并发现了未经授权的管理员面板访问权限。

重现步骤:

  1. 使用任何有效的电子邮件地址和密码,在 https://target.example.com/ 创建一个账户。

  2. 请使用邮件验证链接验证账户。

  3. 使用有效凭据登录,并使用 Burp Suite 拦截登录请求。

  4. 现在,在请求中执行拦截 > 对此请求的响应。

  5. 在登录响应中,找到响应正文中的 JWT 令牌。

  6. 现在,复制 JWT 令牌,访问 https://jwt.io 并粘贴 JWT 令牌。

  7. 修改有效载荷:——将 “role”:”user”更改为”role”:”admin”。

  8. 在 JWT 标头中,将算法从 “alg”:”RS256″更改为”alg”:”HS256″。

  9. 将生成一个新的 JWT 令牌。复制伪造的令牌。

  10. 现在,在 Burp Suite 中,拦截原始响应或发出经过身份验证的请求,并将响应正文中的原始 JWT 替换为伪造的 JWT。

  11. 转发请求。

  12. 您将获得管理员面板的访问权限,确认权限提升成功。

管理员面板接管的概念验证

安全影响: 成功利用此 JWT 配置错误和算法混淆漏洞,攻击者无需有效的管理员凭据即可将权限从普通用户提升至管理员。这可能导致个人身份信息 (PII)、机密记录或内部系统数据泄露。

之后,我未经授权访问了组织的管理后台。我提交了一份报告,并上报给了 Bugcrowd。随后,Bugcrowd 验证了该漏洞,并将其评级为严重(P1),同时支付了我四位数的赏金。

4位数赏金


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Rsec Ashish Yadav Ashish Yadav《0123.我是如何通过 JWT 操纵非法获取组织管理面板访问权限的 $$》

评论:0   参与:  0