Web安全基础学习:暴力破解漏洞之Token伪造

理论基础

  • 什么是Token

    Token全称JSON Web Token,又简称JWT,是一种用于身份验证和授权的开放标准。它是一种轻量级的、基于JSON的令牌,可以在客户端和服务器之间传递信息。JWT由三部分组成:header(头部).payload(载荷).signature(签证),形似如下:

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
    eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlJvY2siLCJhZG1pbiI6dHJ1ZX0.
    FgWU4K2h_NpZsfb9FxJcsmKRb3dNNlIgDeuD4onIx4A
    

    其中header和payload部分由base64 URL编码进行编码,JWT Signature部分可以使用 HMAC 算法或使用 RSA 的公钥/私钥对进行签名。JWT的优点包括可扩展性、可靠性和安全性。

    简单的说,JWT就是通过数字签名的方式,以JSON对象为载体的开发标准,可以在不同的服务终端之间安全的传输信息。

    详细介绍:CSDN-JWT详解

  • Token伪造漏洞

    Token伪造,顾名思义通过伪造JWT,以特定账户的身份欺骗系统完成验证。Token伪造是一类漏洞的统称,可以是最简单的弱密钥爆破,也可以是其他高危漏洞,但无论类型如何变化,都是基于Token进行攻击并对其身份认证功能产生威胁。常见的关于Token漏洞如下:

    • CVE-2015-2951:alg=none签名绕过漏洞
    • CVE-2016-10555:RS / HS256公钥不匹配漏洞
    • CVE-2018-0114:Key injection漏洞
    • CVE-2019-20933 / CVE-2020-28637:Blank password漏洞
    • CVE-2020-28042:Null signature漏洞
    • JWKS欺骗
    • “kid”注射
    • 跨服务中继攻击
    • 弱密钥
    • ……
  • Token测试相关工具
    1. JWT弱口令爆破:jwtcrack
    2. JWT综合利用/测试工具:jwt_tool
    3. JWT密钥爆破:hashcat
  • Token漏洞防御
    1. 避免在令牌中直接传输用户的敏感数据以及系统内部的关键参数。
    2. 若使用对称加密算法,应使用强密钥提高秘钥破解的难度。
    3. 若使用非对称加密算法,应在服务端增加已授权算法的白名单,限制签名算法类型,防止密钥混淆攻击。
    4. 严格验证并过滤从用户端接收的数据,例如kid、jku等关键参数,防止因没有对参数进行正确校验而产生的安全风险。
    5. 在Payload字段中增加一些业务上的字段,用于校验。

实践学习

漏洞环境以Pilot靶场为例:下载地址与部署教程

  1. 使用任意账号登录,并抓包。这里以账号密码pilot/123456为例:

    l3-1

  2. 在响应包中获得Token值。返回WEB页面,点击身份认证按钮并抓包:

    l3-2

  3. 可以成功验证登录账号身份为pilot

  4. 修改参数username为管理员账号admin,尝试伪造身份:

    l3-3

  5. 提示Token过期或错误,说明Token信息与username参数传入的值不匹配,无法验证admin身份。

  6. 复制Token值至Token爆破工具jwtcracker,尝试爆破密钥:

    l3-4

  7. 获得Token密钥为“1”,通过JWT官方网站伪造Token:

    l3-5

  8. 复制修改后的Token,替换身份认证API中的Token值,再次验证:

    l3-6

    l3-7

  9. 通过修改Token,成功伪造身份为admin

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值