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

PortSwigger靶场之 CSRF where token is not tied to user session通关秘籍

要解决 “令牌与用户会话不绑定的 CSRF” 靶场,核心在于核心核心是利用服务器的验证缺陷 ——CSRF 令牌未与用户会话绑定,导致攻击者可以复用其他用户的令牌发起攻击。以下从理论原理和实践步骤两部分详细说明:

一、核心理论知识:令牌与会话未绑定的 CSRF 漏洞

正常的 CSRF 令牌防御机制要求:令牌必须与用户会话(Session)严格绑定,即每个用户的令牌仅对自己的会话有效,其他用户使用该令牌会被拒绝。

而本靶场的漏洞在于:令牌是 “全局共享” 或 “仅与用户账号弱关联”,不与具体会话绑定。这意味着:

  • 攻击者可以用自己账号的 CSRF 令牌,构造恶意请求攻击其他用户;
  • 即使受害者与攻击者是不同用户,服务器也会认可攻击者提供的令牌(因为不验证令牌所属的会话)。

二、实践步骤:从漏洞验证到攻击完成

步骤 1:准备两个账号,获取各自的 CSRF 令牌

靶场提供了两个账号,需分别获取它们的 CSRF 令牌用于测试:

  1. 登录第一个账号(wiener:peter)

    • 进入 “我的账户” 页面,打开 Burp 拦截功能;
    • 提交 “更改邮箱” 表单(随便填一个测试邮箱),拦截 POST 请求;
    • 记录请求中的 csrf 令牌值(如 csrf=qDrz6lMDQpzgVaLafGLsIlghGg1jQx96),然后放弃该请求(不发送到服务器,避免实际修改邮箱)。
  2. 登录第二个账号(carlos:montoya)

    • 打开浏览器隐私模式(避免会话冲突),登录该账号;
    • 同样提交 “更改邮箱” 表单,拦截请求并记录其 csrf 令牌(如 csrf=XNIBRbSGKbYDEdGe5J9NBgsw2qJFO0fB)。

步骤 2:验证 “令牌可跨会话复用”

通过 Burp Repeater 测试令牌是否与会话绑定:

  1. 在隐私模式下(carlos 账号的会话),将拦截的 “更改邮箱” 请求发送到 Repeater;
  2. 修改请求中的 csrf 令牌值,将其替换为 wiener 账号的令牌
  3. 确保请求体中的 email 是新邮箱(如 test-cross@example.com),发送请求;
  4. 观察响应:
    • 若服务器返回 302 重定向(跳转到账户主页),且查看 carlos 账号的邮箱已被修改,说明 令牌可跨会话复用(漏洞确认)。

步骤 3:构造包含 “攻击者令牌” 的恶意 HTML

由于令牌不与会话绑定,直接使用自己账号(如 wiener)的 CSRF 令牌构造恶意表单即可:

  • 注意:令牌是 “一次性的”(使用后失效),测试时发现令牌无效,重新获取 wiener 账号的新令牌替换(csrf=tZ7RL9JwrbA0GKa3IfiXtGvf4XRoEjcw)

步骤 4:上传恶意 HTML 到漏洞服务器并验证

  1. 访问靶场的 “漏洞服务器”,将上述 HTML 粘贴到 “Body” 中,点击 “Store”;
  2. 用隐私模式打开 carlos 账号(模拟受害者),访问漏洞服务器的 “View Exploit” 页面;
  3. 查看 carlos 账号的邮箱确实被修改,说明恶意 HTML 有效(攻击者的令牌被受害者的会话接受)。

步骤 5:发起最终攻击

  1. 确保恶意 HTML 中的 email 是未被占用的新邮箱(避免与测试邮箱冲突);
  2. 若令牌是一次性的,重新获取 wiener 账号的最新令牌替换到 HTML 中,再次 “Store”;
  3. 点击 “Deliver to Victim”,靶场会模拟受害者访问恶意页面,其邮箱将被成功修改,实验室提示 “已解决”。

三、关键注意事项

  1. 令牌的时效性:若令牌是一次性的(使用后立即失效),需在发起攻击前重新获取最新令牌;
  2. 跨账号验证:必须通过两个账号的交叉测试,确认令牌可复用(如用 wiener 的令牌修改 carlos 的邮箱);
  3. 邮箱唯一性:最终攻击使用的邮箱需未被任何用户占用

通过以上步骤,利用 “令牌与会话不绑定” 的漏洞,复用攻击者的 CSRF 令牌即可绕开防御,成功完成 CSRF 攻击。

http://www.dtcms.com/a/482134.html

相关文章:

  • 四川住房城乡建设厅网站眉山注册公司流程和费用
  • 【数据库】时序数据库选型指南:在大数据与工业4.0时代,为何 Apache IoTDB 成为智慧之选?
  • 免费建站网站seowordpress 调用 discuz
  • 多因子模型识别避险共振:AI量化系统捕捉黄金突破4100美元的驱动信号
  • DAPLINK可以烧录,但无法调试仿真
  • 手机网站设计咨询永久免费的连外网的软件
  • 只出现一次的数字(位运算算法)
  • Unity 跨平台构建完全指南
  • linux的centos7安装git软件
  • 江苏省省建设厅网站免费制作网站服务器
  • 前端碎碎念笔记:JavaScript 对象的继承与多态
  • 【Xcode】Macos p12 证书过期时间查看
  • 【AI视频】从单模型,到AI Agent工作流
  • C#知识学习-017(修饰符_6)
  • 视频营销网站网站前端设计与制作ppt
  • 基于单片机直流电机PWM调速闭环控制系统Proteus仿真(含全部资料)
  • WHAT - 前端性能指标(加载性能指标)
  • 网站外包要注意什么wordpress 布局编辑器
  • 人工智能课程:课程目录介绍 总纲
  • 1、机器学习与深度学习
  • 深入解析 kube-proxy:Kubernetes 服务发现的网络基石
  • Bestseller验厂核心解读
  • 1. cuda配置代码提示
  • Docker 构建教程:学习上下文、架构和性能优化技术
  • mysql数据库高级特性(一)
  • 做网站读什么专业个人网站备案内容不合格
  • 如何实现一个线程安全的容器:从同步机制到异常安全的设计实践
  • 网站建设与运营课程建筑行业官网
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的互联网运营体系化研究
  • 线上教学小程序:构建高效互动的云端学习空间