JWT 原理与漏洞深度解析及攻防实战

2025-03-07 9 0

一、JWT 原理详解

1. JWT 结构

JWT 由三部分组成,以 .分隔:

  • Header:声明算法(alg)和类型(typ),例如:

    {
      "alg": "HS256",
      "typ": "JWT",
      "kid": "default"  // 可选参数,用于指定密钥 ID
    }
  • Payload:存储用户身份和权限信息,例如:

    {
      "sub": "user123",
      "exp": 1720000000,  // 过期时间
      "admin": true
    }
  • Signature:对 Header 和 Payload 的签名,防止篡改。
    签名生成逻辑(以 HS256 为例):

    signature = HMACSHA256(
      base64UrlEncode(header) + "." + base64UrlEncode(payload),
      secret_key
    )

最终 Token 格式:base64(Header).base64(Payload).base64(Signature)

2. JWT 工作流程

  1. 用户登录:客户端发送凭证(如用户名/密码)。

  2. 服务端生成 JWT:验证成功后返回签名的 Token。

  3. 客户端存储:通常存储在 Cookie 或 LocalStorage。

  4. 后续请求:客户端携带 Token,服务端验证签名和有效期。

二、JWT 漏洞场景深度剖析

1. 敏感信息泄露

  • 漏洞原理
    JWT 的 Payload 仅通过 Base64 编码,未加密。若开发者将敏感数据(如密码、密钥、手机号)存入 Payload,攻击者可轻易解码获取信息。

  • 实际案例
    某电商平台将用户地址和手机号明文存入 JWT,攻击者通过解码 Token 获取用户隐私数据。

  • 代码示例(错误 vs 正确)

    # 错误:明文存储手机号
    payload = {"user": "admin", "phone": "13800138000"}
    
    # 正确:仅存储必要标识
    payload = {"user_id": "a3f8b", "role": "user"}  # 使用无意义 UUID 替代敏感字段
  • 利用方式
    使用浏览器开发者工具或在线解码工具(如 jwt.io)直接读取 Payload:

    echo "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwaG9uZSI6IjEzODAwMTM4MDAwIn0" | base64 -d
    # 输出:{"phone":"13800138000"}
  • 防御方案

    • 最小化 Payload 内容,避免存储敏感数据。

    • 对必要敏感字段加密(如 AES)后再存入 Payload。

2. 接受任意签名(alg: none攻击)

  • 漏洞原理
    当服务端未强制校验签名算法时,攻击者可篡改 Header 的 alg为 none,绕过签名验证。

  • 攻击步骤

    1. 截获合法 Token:header.payload.signature

    2. 修改 Header 为 {"alg": "none", "typ": "JWT"}

    3. 删除 Signature,构造新 Token:malicious_header.payload.

    4. 发送给服务端,若验证通过则攻击成功。

  • 代码示例(服务端漏洞代码)

    # 错误:未限制算法类型
    def decode_token(token):
        return jwt.decode(token, key="secret", algorithms=None)  # 允许所有算法
  • 利用工具
    使用 Burp Suite 的 Repeater模块修改请求头,或手动生成 Token:

    import base64
    header = base64.urlsafe_b64encode(b'{"alg":"none","typ":"JWT"}').decode().strip("=")
    payload = base64.urlsafe_b64encode(b'{"user":"admin"}').decode().strip("=")
    fake_token = f"{header}.{payload}."

4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

恶意软件伪装成合法 Go 库感染Linux和macOS用户 | CSO Online
PWN栈溢出基础-ret2csu
【验证码逆向专栏】某盾 v2 滑动验证码逆向分析
探秘条件漏洞:系统安全的潜在隐患
记录某SRC邀请处逻辑越权到组织管理员漏洞
DNSTwist 使用指南

发布评论