写点什么

Burp Suite 宏与会话处理实战:突破 CSRF 令牌防护

作者:qife
  • 2025-07-27
    福建
  • 本文字数:766 字

    阅读完需:约 3 分钟

Burp 宏与会话处理

我使用 Burp Suite 多年,但直到两周前才真正开始使用宏功能。当时我需要用 Intruder 暴力破解一个包含 CSRF 令牌的表单,该令牌由 JavaScript 动态生成并写入表单。为了确保每次请求都携带有效令牌,必须从 JavaScript 提取最新令牌。本文记录了我搭建测试环境并最终实现自动化处理的完整过程。

测试环境搭建

目标应用采用 PHP 实现核心逻辑:


<?phpsession_start();$message = "";
if ($_SERVER['REQUEST_METHOD'] == "POST") { if (array_key_exists ("token", $_POST) && array_key_exists ("token", $_SESSION)) { if ($_POST['token'] == $_SESSION['token']) { $message = "Success"; } else { $message = "Tokens don't match"; } }}$token = md5(mt_rand());$_SESSION['token'] = $token;?>
复制代码


关键流程说明:


  1. GET 请求时生成随机 MD5 令牌存入 Session

  2. 表单通过 JavaScript 动态注入令牌值

  3. POST 请求时验证提交令牌与 Session 是否匹配

  4. 未执行 JavaScript 会导致提交空令牌

攻击实施步骤

1. 创建宏

  • 进入Project options > Sessions标签页

  • 在 Macros 区域点击Add按钮

  • 从代理历史记录中选择包含令牌的 POST 请求

2. 配置自定义参数

  • 在宏编辑器中点击Configure Item

  • 添加Custom parameter locations in response

  • 定义参数名为"token"并高亮响应中的令牌值

3. 设置会话处理规则

  • 创建新规则并添加Run a macro动作

  • 选择之前创建的宏

  • 在 Scope 标签页设置目标 URL 范围

4. 验证功能

  • 在 Repeater 中重放请求

  • 成功时响应应显示"Success"

  • 每次请求自动更新令牌参数

技术要点

  • Burp 默认不执行 JavaScript,需要宏机制捕获动态内容

  • 自定义参数定位可从响应中提取实时令牌

  • 会话处理规则将宏与请求流程绑定


官方文档参考:Macro Editor | Session Handling Rules更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码

办公AI智能小助手
用户头像

qife

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
Burp Suite宏与会话处理实战:突破CSRF令牌防护_渗透测试_qife_InfoQ写作社区