一、前置知识

        Authorization值为JWT(JSON Web Token)格式,采用Base64URL编码而非加密,由三部分通过点号连接:Header(声明算法HS256)、Payload(明文存储用户ID、权限类型等数据)和Signature(使用密钥对前两部分签名)。

        攻击者可轻易解码前两部分修改内容,若持有密钥还可重新签名伪造;真正的防护需改用RS256非对称算法配合AES加密敏感字段,使客户端无法解析也无法伪造。

        JWT令牌篡改与客户端权限提升漏洞是一种利用服务端对JWT令牌内容过度信任、未实施签名验证或缺乏关键声明校验,通过解码修改令牌中的用户标识(uid)和权限类型(UType)实现身份伪造与权限提升的攻击技术。

二、实操技巧演示

        所有操作技巧演示均在玄域靶场平台中合法进行!

        玄域靶场:www.shangsec.com

        这里非常推荐玄域靶场平台,不仅有web靶场环境,还有安卓App苹果App靶场环境!

        以及配套了上百道最新精选的面试题库,且所有题目均有参考回答;更有实战漏洞报告板块,供大家进行学习!

        且所有靶场环境、面试题库、实战漏洞报告均在持续更新中!

        然后打开 玄域JWT漏洞-05&越权 漏洞靶场环境,开启burpsute进行抓包,点击“查看信息”功能点。

        使用bp拦截抓包,并且发现存在Authorization值,因为该关卡是关于jwt的,所以尝试使用bp自带插件JSON Web Token解密Authorization值。

        通过插件发现,JWT 的 Payload 中以 uid 标识用户身份、UType 定义角色权限,二者共同作为服务端鉴权的判断依据。

        推测 UType 是 用户类型/角色标识字段,用于区分不同权限等级的用户群体,当前值 "general" 表明这是一个普通用户/一般用户账号,系统会根据该字段值控制功能访问权限(如管理员 admin 可访问后台,而 general 只能查看公开数据)。

        在渗透测试中,这是典型的水平越权/垂直越权测试点——尝试将 "general" 修改为 "admin"、"super"、"system" 等高权限角色值,配合重新签名(如果密钥泄露或可爆破)或直接发送(如果服务端未验签),即可实现权限提升。

        推测 uid 是用户身份标识符,当前值 "5201314" 代表系统中特定用户的数字ID,服务端通过该字段识别"谁"在发起请求,并与数据库中的用户记录关联以返回对应数据。

        在渗透测试中这是IDOR(不安全的直接对象引用)漏洞的核心测试点——尝试修改uid为其他数值(如5201315、1、admin的uid等),若服务端未严格校验该用户是否有权访问此uid对应的数据,即可导致水平越权(查看其他普通用户信息)或配合UType篡改实现垂直越权(以低权限token操作高权限资源)。

        同时修改uid和utype字段,uid为其他用户,utype为admin,并进行jwt编码后替换。

        成功获得flag

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐