欢迎光临
我们一直在努力

WebGoat JWT 密钥伪造关卡通关实战 | JWT 爆破与伪造全流程(第十一关)

核心原理:JWT 结构与 HMAC 签名

JWT(JSON Web Token)由三部分组成,用 . 分隔:

  • Header(头部):描述签名算法(如 HS256 = HMAC-SHA256)

  • Payload(载荷):存放业务数据(如用户名 username)

  • Signature(签名):HMAC-SHA256( base64(Header) + "." + base64(Payload), 密钥 )

将网站给我们的Token,复制下来放入无影(TscanPlus)的轻武器库,

JwtCrack 是:针对使用对称加密算法(如 HS256/HS384/HS512) 的 JWT,通过暴力 / 字典攻击找到签名用的密钥,进而篡改 JWT 内容并生成能通过服务器验证的伪造 Token。

构造并提交伪造 Token
  • 修改 Payload 中的 username 为 WebGoat

  • 对新的 Header 和 Payload 分别做 Base64URL 编码

  • 还需要修改时间戳exp:

  • 用破解出的密钥,计算新签名:HMAC-SHA256(新Header.新Payload, 密钥)

  • 拼接成新 Token:新Header.新Payload.新签名

  • 提交到 WebGoat,服务器验证签名一致 → 通关

    一、JWT 中常见的时间戳字段

    JWT 的 Payload(载荷)里通常包含以下时间戳字段(都是 Unix 时间戳,即从 1970-01-01 00:00:00 UTC 到当前的秒数):

    字段名全称含义示例(值)对应北京时间
    iat Issued At Token 签发时间 1735372400 2026-01-28 10:33:20
    exp Expiration Time Token 过期时间 1735376000 2026-01-28 11:33:20
    nbf Not Before Token 生效时间(可选) 1735372000 2026-01-28 10:26:40
    jti JWT ID Token 唯一标识(非时间,但常和时间配合) 随机字符串

    最核心的两个:

    • iat:记录 Token 什么时候发的,服务器可验证 Token 签发时间是否合理;

    • exp:最重要的「过期时间」,服务器会强制校验这个字段 —— 如果当前时间 > exp,直接拒绝 Token,哪怕签名合法。

  • 修改之后:

    新签名的核心是「用破解的密钥,对 Base64URL 编码后的 Header+Payload 做 HMAC-SHA256 哈希,再对哈希结果做 Base64URL 编码」;

    总结

    本次实验通过TscanPlus 的 JwtCrack工具实现了 JWT 密钥的爆破,掌握了对称加密 JWT 的伪造核心流程,核心要点为破解密钥和正确生成签名,同时理解了 JWT 中 exp 时间戳的强制校验机制。JWT 作为前后端分离、微服务架构中常用的认证方式,其密钥泄露和签名伪造是高频安全漏洞,掌握本次实验的方法对 Web 安全渗透测试具有重要实际意义。


    创作不易,点赞 + 收藏 + 关注,后续持续更新 WebGoat 靶场通关实战、Web 安全渗透技巧!

    赞(0)
    未经允许不得转载:171主机测评 » WebGoat JWT 密钥伪造关卡通关实战 | JWT 爆破与伪造全流程(第十一关)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址