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;
?>
关键流程说明:
- GET请求时生成随机MD5令牌存入Session
- 表单通过JavaScript动态注入令牌值
- POST请求时验证提交令牌与Session是否匹配
- 未执行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智能小助手)
公众号二维码