同源异梦:JWT 泄露后从主站到旁站的渗透曲线
字数 1562 2025-09-01 11:26:11

JWT泄露渗透测试实战指南:从主站到旁站的全流程分析

1. 漏洞发现与初步测试

1.1 JWT泄露发现

  • 通过浏览器开发者工具检查网络请求,发现JWT令牌泄露
  • 典型位置:Authorization头、Cookie或响应体中

1.2 初步利用尝试

  • 尝试将泄露的JWT用于主站API访问
  • 常见响应:
    • 401 Unauthorized:令牌无效或过期
    • 404 Not Found:接口路径错误
  • 当主站利用失败时,考虑横向扩展测试范围

2. 信息收集与旁站发现

2.1 同IP站点发现

  • 使用工具和技术:
    • IP反查:nslookupdig
    • 网络扫描:nmapmasscan
    • 在线服务:censys.ioshodan.io

2.2 相似站点识别

  • 分析域名模式:
    • admin.example.com vs console.example.com
    • 相同父域名的不同子域名
  • 检查相同开发框架的特征

3. JWT跨站利用技术

3.1 令牌有效性验证

  1. 在旁站登录接口抓取请求
  2. 添加Header:token: {泄露的JWT}
  3. 观察响应状态码和数据

3.2 接口路径推测

  • 常见API路径模式:
    • /api/v1/list
    • /rest/user/info
    • /graphql
  • 使用工具:dirsearchgobuster进行路径枚举

3.3 参数构造技巧

  • 将POST body参数转为GET query参数:
    • {"id":123}?id=123
  • 测试参数位置:
    • Headers
    • URL路径
    • Query参数
    • Body参数

4. 权限提升与密码重置

4.1 账户信息获取

  • 关键字段识别:
    • platAccountId
    • userId
    • username

4.2 密码重置漏洞利用

  1. 找到密码重置端点
  2. 构造包含必要参数的请求:
    POST /api/resetPassword
    Headers:
      Authorization: Bearer {JWT}
    Body:
      {
        "platAccountId": "获取的ID",
        "password": "新密码"
      }
    

5. 管理员账户接管

5.1 管理员识别

  • 通过接口响应中的权限字段识别高权限账户
  • 常见字段:isAdminroleprivileges

5.2 凭证修改

  • 修改管理员密码后直接登录
  • 或使用泄露的JWT直接访问管理员接口

6. 后续漏洞挖掘

6.1 SQL注入

  • Druid防火墙绕过技术:
    • 报错注入payload:
      /0 or updatexml(1,concat(0x7e,user(),0x7e),1)=1
    • 可获取信息:
      • 数据库用户
      • 数据库名
      • 表结构

6.2 XSS绕过

  • Vue框架下的XSS限制:
    • 寻找v-html指令的使用
    • 富文本编辑器漏洞利用
    • 上传HTML文件测试

6.3 敏感信息泄露

  • 云存储凭证泄露:
    • 检查响应中的aksk(Access Key/Secret Key)
    • STS临时凭证
    • 使用工具验证:
      • AWS CLI
      • OBS浏览器
      • Aliyun ossutil

6.4 越权漏洞验证

  1. 获取低权限用户token
  2. 替换高权限操作中的token
  3. 测试功能点权限而非菜单权限

7. 防御建议

7.1 JWT安全

  • 设置合理的过期时间
  • 使用HTTPS传输
  • 实现token吊销机制
  • 避免客户端存储敏感token

7.2 接口安全

  • 严格的权限验证
  • 接口访问日志记录
  • 敏感操作二次验证

7.3 基础设施安全

  • 定期轮换云服务凭证
  • 最小权限原则配置存储桶
  • 网络隔离不同系统

8. 工具推荐

  1. JWT工具

    • jwt.io
    • jwt_tool
  2. 接口测试

    • Burp Suite
    • Postman
    • curl
  3. 信息收集

    • Amass
    • Subfinder
    • Assetfinder
  4. 云存储测试

    • AWS CLI
    • OBS Browser+
    • ossbrowser

本指南详细记录了从JWT泄露到系统完全控制的完整渗透流程,强调了信息收集和横向移动的重要性,为安全测试人员提供了实用的技术参考。

JWT泄露渗透测试实战指南:从主站到旁站的全流程分析 1. 漏洞发现与初步测试 1.1 JWT泄露发现 通过浏览器开发者工具检查网络请求,发现JWT令牌泄露 典型位置:Authorization头、Cookie或响应体中 1.2 初步利用尝试 尝试将泄露的JWT用于主站API访问 常见响应: 401 Unauthorized:令牌无效或过期 404 Not Found:接口路径错误 当主站利用失败时,考虑横向扩展测试范围 2. 信息收集与旁站发现 2.1 同IP站点发现 使用工具和技术: IP反查: nslookup 、 dig 网络扫描: nmap 、 masscan 在线服务: censys.io 、 shodan.io 2.2 相似站点识别 分析域名模式: admin.example.com vs console.example.com 相同父域名的不同子域名 检查相同开发框架的特征 3. JWT跨站利用技术 3.1 令牌有效性验证 在旁站登录接口抓取请求 添加Header: token: {泄露的JWT} 观察响应状态码和数据 3.2 接口路径推测 常见API路径模式: /api/v1/list /rest/user/info /graphql 使用工具: dirsearch 、 gobuster 进行路径枚举 3.3 参数构造技巧 将POST body参数转为GET query参数: {"id":123} → ?id=123 测试参数位置: Headers URL路径 Query参数 Body参数 4. 权限提升与密码重置 4.1 账户信息获取 关键字段识别: platAccountId userId username 4.2 密码重置漏洞利用 找到密码重置端点 构造包含必要参数的请求: 5. 管理员账户接管 5.1 管理员识别 通过接口响应中的权限字段识别高权限账户 常见字段: isAdmin 、 role 、 privileges 5.2 凭证修改 修改管理员密码后直接登录 或使用泄露的JWT直接访问管理员接口 6. 后续漏洞挖掘 6.1 SQL注入 Druid防火墙绕过技术: 报错注入payload: /0 or updatexml(1,concat(0x7e,user(),0x7e),1)=1 可获取信息: 数据库用户 数据库名 表结构 6.2 XSS绕过 Vue框架下的XSS限制: 寻找 v-html 指令的使用 富文本编辑器漏洞利用 上传HTML文件测试 6.3 敏感信息泄露 云存储凭证泄露: 检查响应中的 aksk (Access Key/Secret Key) STS临时凭证 使用工具验证: AWS CLI OBS浏览器 Aliyun ossutil 6.4 越权漏洞验证 获取低权限用户token 替换高权限操作中的token 测试功能点权限而非菜单权限 7. 防御建议 7.1 JWT安全 设置合理的过期时间 使用HTTPS传输 实现token吊销机制 避免客户端存储敏感token 7.2 接口安全 严格的权限验证 接口访问日志记录 敏感操作二次验证 7.3 基础设施安全 定期轮换云服务凭证 最小权限原则配置存储桶 网络隔离不同系统 8. 工具推荐 JWT工具 : jwt.io jwt_ tool 接口测试 : Burp Suite Postman curl 信息收集 : Amass Subfinder Assetfinder 云存储测试 : AWS CLI OBS Browser+ ossbrowser 本指南详细记录了从JWT泄露到系统完全控制的完整渗透流程,强调了信息收集和横向移动的重要性,为安全测试人员提供了实用的技术参考。