当前位置: 首页 > news >正文

burpsuite攻防实验室-JWT漏洞

JWT authentication bypass via unverified signature(通过未验证签名绕过 JWT 身份验证)

本练习使用基于 JWT 的机制来处理会话。由于实现缺陷,服务器不会验证它收到的任何 JWT 的签名。

要解决该实验室问题,请修改您的会话令牌以访问 的管理面板 ,然后删除用户。/admincarlos

您可以使用以下凭据登录自己的帐户:wiener:peter

  1. 在实验环境中,登录你自己的账号。

  1. 在 Burp(抓包工具)中,进入 “代理(Proxy)”>“HTTP 历史记录(HTTP history)” 标签页,找到登录后的请求。观察到你的会话 Cookie 是一个 JWT(JSON Web Token),对应的请求为 “GET /my-account”。

  1. 双击该令牌的载荷(payload)部分,在 “检查器(Inspector)” 面板中查看其解码后的 JSON 格式。

注意到 “sub” 声明(claim)中包含你的用户名。将此请求发送到 “Burp 中继器(Burp Repeater)”。

  1. 在 Burp 中继器中,将请求路径修改为 “/admin” 并发送请求。观察到只有以 “administrator”(管理员)用户身份登录时,才能访问管理员面板

  1. 再次选中 JWT 的载荷部分。在检查器面板中,将 “sub” 声明的值从 “wiener”(普通用户名,示例)修改为 “administrator”,然后点击 “应用更改(Apply changes)”。

  1. 再次发送请求。观察到你已成功访问管理员面板

  1. 在响应内容中,找到用于删除 “carlos”(目标用户)的 URL(地址),该 URL 为 “/admin/delete?username=carlos”。

向此端点(endpoint)发送请求,即可完成该实验。

 

JWT authentication bypass via flawed signature verification

(通过存在缺陷的签名验证绕过JWT身份验证 )

  1. 在实验环境中,登录你自己的账号。
  1. 在 Burp(抓包工具)中,进入 “代理(Proxy)”>“HTTP 历史记录(HTTP history)” 标签页,找到登录后的 “GET /my-account” 请求。观察到你的会话 Cookie 是一个 JWT(JSON Web Token)。

  1. 双击该令牌的载荷(payload)部分,在 “检查器(Inspector)” 面板中查看其解码后的 JSON 格式。注意到 “sub” 声明(claim)中包含你的用户名。将此请求发送到 “Burp 中继器(Burp Repeater)”

  1. 在 Burp 中继器中,将请求路径修改为 “/admin” 并发送请求。观察到只有以 “administrator”(管理员)用户身份登录时,才能访问管理员面板。

  1. 再次选中 JWT 的载荷部分。在检查器面板中,将 “sub” 声明的值修改为 “administrator”,然后点击 “应用更改(Apply changes)”。

  1. 选中 JWT 的头部(header)部分,接着通过检查器将 “alg” 参数(算法参数)的值修改为 “none”,点击 “应用更改(Apply changes)”。

  1. 在消息编辑器(message editor)中,删除 JWT 中的签名(signature)部分,但需注意保留载荷后面的末尾点号(.)。

  1. 发送请求,观察到你已成功访问管理员面板。
  2. 在响应内容中,找到用于删除 “carlos”(目标用户)的 URL(地址),该 URL 为 “/admin/delete?username=carlos”。向此端点(endpoint)发送请求,即可完成该实验。

 

JWT authentication bypass via weak signing key
(通过弱签名密钥绕过 JWT 身份验证)

第 1 部分 - 暴力破解密钥

  1. 在 Burp 中,从 BApp 商店加载 JWT 编辑器扩展(JWT Editor extension)。
  2. 在实验环境中,登录你自己的账号,并将登录后的 “GET /my-account” 请求发送到 Burp 中继器(Burp Repeater)。
  3. 在 Burp 中继器中,将请求路径修改为 “/admin” 并发送请求。观察到只有以 “administrator”(管理员)用户身份登录时,才能访问管理员面板。
  4. 复制该 JWT(JSON Web Token)并对其密钥进行暴力破解。你可以使用 hashcat 工具,通过以下命令实现:
    hashcat -a 0 -m 16500 <你的JWT令牌> /密钥字典文件路径/jwt.secrets.list
    若使用 hashcat,命令执行后会输出 JWT 令牌,其后紧跟对应的密钥。若操作无误,结果会显示该弱密钥为 “secret1”。

注意:若多次运行此命令,需添加 “--show” 参数,才能再次在控制台输出结果。

第 2 部分 - 生成伪造的签名密钥

  1. 使用 Burp 解码器(Burp Decoder),对前一部分中暴力破解得到的密钥进行 Base64 编码。
  2. 在 Burp 中,进入 “JWT 编辑器密钥”(JWT Editor Keys)标签页,点击 “新建对称密钥”(New Symmetric Key)。
  3. 在弹出的对话框中,点击 “生成”(Generate),以 JWK(JSON Web Key)格式生成一个新密钥。注意:无需选择密钥长度,后续系统会自动更新。
  4. 将生成的密钥中 “k” 属性的值替换为前面 Base64 编码后的密钥。
  5. 点击 “确定”(OK)保存该密钥。

第 3 部分 - 修改并签名 JWT

  1. 返回 Burp 中继器中 “GET /admin” 请求的页面,切换到由扩展生成的 “JSON Web Token” 消息编辑标签页。
  2. 在载荷(payload)中,将 “sub” 声明(claim)的值修改为 “administrator”。
  3. 在该标签页底部,点击 “签名”(Sign),然后选择上一部分中你生成的密钥。
  4. 确保勾选 “不修改头部”(Don't modify header)选项,然后点击 “确定”(OK)。此时,修改后的令牌已使用正确的签名完成签名。
  5. 发送请求,观察到你已成功访问管理员面板。
  6. 在响应内容中,找到用于删除 “carlos” 的 URL(地址),即 “/admin/delete?username=carlos”。向此端点(endpoint)发送请求,即可完成该实验。

http://www.xdnf.cn/news/1446445.html

相关文章:

  • 【机器学习学习笔记】线性回归实现与应用
  • Shell-AWK详解
  • 单片机day2
  • Chapter1—设计模式基础
  • 线性代数基础 | 基底 / 矩阵 / 行列式 / 秩 / 线性方程组
  • 在线性代数里聊聊word embedding
  • Java:跨越时代的编程语言,持续赋能数字化转型
  • java面试:可以讲解一下mysql的索引吗
  • 「数据获取」《吉林企业统计年鉴(2004)》(获取方式看绑定的资源)
  • 基于区块链的商品信息追溯平台(源码+论文+部署+安装)
  • 关于linux软件编程15——数据库编程sqlite3
  • wpf之Border
  • 小程序 NFC 技术IsoDep协议
  • iBeLink BM S1 Max 12T矿机评测:Sia算法、高效算力与优化设计解析
  • AI 重塑就业市场:哪些职业会被替代?又有哪些新岗位正在崛起?
  • 文件处理三大利器之三:awk
  • 3大主流语言web框架写hello world
  • 接口测试之Mock测试方法详解
  • 使用spring-boot-starter-validation常用注释优雅判断类型
  • 小迪安全v2023学习笔记(七十六讲)—— Fuzz模糊测试口令爆破目录爆破参数爆破Payload爆破
  • uniapp 开发上架 iOS App全流程
  • uni-app iOS 文件管理与 itools 配合实战,多工具协作的完整流程
  • 如何选择适合企业的海外智能客服系统:6 大核心维度 + 实战选型指南
  • 集成运算放大器的作用、选型和测量指南-超简单解读
  • 4 款音分轨工具推荐:制片帮领衔,轻松搞定音频分离
  • 实现信号的小波分解和重构
  • 7.5el-tree 组件详解
  • 创建消息队列,完成信息传输
  • MySQL索引分类
  • 英语四级学习指南