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

Burp宏与会话处理

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

测试环境搭建

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

<?php
session_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智能小助手)
公众号二维码

posted @ 2025-07-27 20:01  qife  阅读(7)  评论(0)    收藏  举报