记录一次JWT的越权渗透测试
字数 1302 2025-08-20 18:17:58

JWT越权渗透测试实战教学文档

1. JWT基础概念

1.1 什么是JWT

JWT(Json Web Token)是目前最流行的跨域认证解决方案,由三部分组成,以点(.)分隔的Base64编码字符串:

  1. Header(头部):包含令牌类型和签名算法

    {
      "kid": "keys/3c3c2ea1c3f213f649dc9389dd71b851",
      "typ": "JWT",
      "alg": "RS256"
    }
    
  2. Payload(负载):包含用户身份信息和其他声明

    {
      "sub": "admin"
    }
    
  3. Signature(签名):用于验证令牌完整性和真实性

1.2 JWT常见攻击方式

  1. 未校验签名:直接修改Payload部分,重新生成Token
  2. 禁用Hash(alg=None):将alg值改为None,绕过签名验证
  3. 爆破弱秘钥:使用工具爆破JWT使用的弱密钥

2. 渗透测试案例详解

2.1 系统架构分析

目标系统采用SSO(单点登录)架构:

  • 初始认证:Oracle WebCenter
  • 子系统认证:JWT

Oracle WebCenter是一个面向社交业务的用户参与平台,提供上下文相关的协作工具。

2.2 认证流程分析

  1. 初始认证阶段

    • 用户通过Oracle WebCenter进行认证
    • 认证成功后返回JSON格式的Session信息
  2. JWT Token获取阶段

    • 系统向OAM接口请求JWT Token
    • 请求携带SessionID Cookie证明账户有效性
    • OAM接口返回JWT authorizationToken
  3. 资源访问阶段

    • 系统自动在Header中添加JWT authorizationToken
    • 服务器返回UID等敏感信息

2.3 漏洞发现过程

  1. 越权点定位

    • 系统未严格校验UID和JWT authorizationToken的对应关系
    • 可通过遍历UID实现越权访问
  2. 漏洞利用步骤

    • 通过API爆破UID
    • 修改请求中的UID值
    • 保持JWT Token中的账户信息不变
    • 获取目标用户的权限和数据

2.4 完整攻击链

  1. 爆破UID获取有效用户ID
  2. 使用有效UID和原始JWT Token构造请求
  3. 获取用户分组权限信息
  4. 获取用户未读信息
  5. 获取菜单信息
  6. 获取用户基本信息(baseinfo)
  7. 获取系统按钮、选项等剩余信息

3. 漏洞修复建议

  1. 严格校验机制

    • 校验authorizationToken、UID和user字段的一致性
    • 确保三者中的用户信息匹配
  2. 安全增强措施

    • 实现Token与UID的绑定机制
    • 增加请求来源验证
    • 实施速率限制防止爆破

4. 渗透测试技巧

  1. 全面抓包分析

    • 不要放过任何请求和响应
    • 仔细检查History中的所有记录
  2. 关注认证流程

    • 特别关注认证过程中的每个环节
    • 注意不同认证机制之间的切换点
  3. 参数篡改测试

    • 尝试修改所有可能的身份标识参数
    • 测试参数间的依赖关系

5. 工具推荐

  1. JWT攻击工具

  2. 学习资源

6. 总结

本案例展示了JWT实现不当导致的越权漏洞,关键点在于:

  • 系统未校验UID与Token的对应关系
  • 认证流程中存在可绕过的环节
  • 身份标识参数可被枚举

渗透测试中,细心和系统性的分析是发现此类漏洞的关键。对于JWT实现,必须确保完整的校验机制和参数绑定。

JWT越权渗透测试实战教学文档 1. JWT基础概念 1.1 什么是JWT JWT(Json Web Token)是目前最流行的跨域认证解决方案,由三部分组成,以点(.)分隔的Base64编码字符串: Header(头部) :包含令牌类型和签名算法 Payload(负载) :包含用户身份信息和其他声明 Signature(签名) :用于验证令牌完整性和真实性 1.2 JWT常见攻击方式 未校验签名 :直接修改Payload部分,重新生成Token 禁用Hash(alg=None) :将alg值改为None,绕过签名验证 爆破弱秘钥 :使用工具爆破JWT使用的弱密钥 2. 渗透测试案例详解 2.1 系统架构分析 目标系统采用SSO(单点登录)架构: 初始认证:Oracle WebCenter 子系统认证:JWT Oracle WebCenter是一个面向社交业务的用户参与平台,提供上下文相关的协作工具。 2.2 认证流程分析 初始认证阶段 : 用户通过Oracle WebCenter进行认证 认证成功后返回JSON格式的Session信息 JWT Token获取阶段 : 系统向OAM接口请求JWT Token 请求携带SessionID Cookie证明账户有效性 OAM接口返回JWT authorizationToken 资源访问阶段 : 系统自动在Header中添加JWT authorizationToken 服务器返回UID等敏感信息 2.3 漏洞发现过程 越权点定位 : 系统未严格校验UID和JWT authorizationToken的对应关系 可通过遍历UID实现越权访问 漏洞利用步骤 : 通过API爆破UID 修改请求中的UID值 保持JWT Token中的账户信息不变 获取目标用户的权限和数据 2.4 完整攻击链 爆破UID获取有效用户ID 使用有效UID和原始JWT Token构造请求 获取用户分组权限信息 获取用户未读信息 获取菜单信息 获取用户基本信息(baseinfo) 获取系统按钮、选项等剩余信息 3. 漏洞修复建议 严格校验机制 : 校验authorizationToken、UID和user字段的一致性 确保三者中的用户信息匹配 安全增强措施 : 实现Token与UID的绑定机制 增加请求来源验证 实施速率限制防止爆破 4. 渗透测试技巧 全面抓包分析 : 不要放过任何请求和响应 仔细检查History中的所有记录 关注认证流程 : 特别关注认证过程中的每个环节 注意不同认证机制之间的切换点 参数篡改测试 : 尝试修改所有可能的身份标识参数 测试参数间的依赖关系 5. 工具推荐 JWT攻击工具 : jwt_ tool :JWT测试和破解工具 学习资源 : JWT攻击方式详解 6. 总结 本案例展示了JWT实现不当导致的越权漏洞,关键点在于: 系统未校验UID与Token的对应关系 认证流程中存在可绕过的环节 身份标识参数可被枚举 渗透测试中,细心和系统性的分析是发现此类漏洞的关键。对于JWT实现,必须确保完整的校验机制和参数绑定。