反CSRF爆破的三种姿势
字数 1644 2025-08-27 12:33:37
反CSRF爆破的三种技术姿势详解
1. CSRF Token Tracker插件法
适用场景
- 适用于CSRF token作为请求参数的情况
- 不适用于token在请求头或需要复杂交互的场景
使用方法
- 安装插件:在Burp Suite的BApp Store中搜索并安装"CSRF Token Tracker"
- 配置插件:
- 添加需要跟踪的token参数名(如
user_token) - 确保插件处于激活状态
- 添加需要跟踪的token参数名(如
关键注意事项
- 首次请求必须使用有效token:第一次重放请求时必须使用一个有效的、未使用过的token
- 如果首次使用无效token,后续所有请求都会失败
- 如果首次使用有效token,后续请求会自动更新token
- 在Repeater模块测试时,确保插件已正确识别和更新token
局限性
- 无法处理token在请求头中的情况
- 不适用于需要先执行前置请求获取token的场景
2. 宏定义方法
适用场景
- 当CSRF Token Tracker无法使用时
- 需要先执行前置请求获取token的情况
配置步骤
- 进入Burp → Project options → Sessions
- 添加新的Session Handling Rule
- 在Rule Actions中添加"Run a macro"
- 创建新宏:
- 选择获取token的前置请求
- 选择使用token的主请求
- 配置宏参数:
- 选择"1"(在所有请求前运行宏)
- 配置token提取和替换规则
工作原理
- 每次发送主请求前,宏会自动执行前置请求获取新token
- 获取的token会自动替换到主请求中
示例流程
- 用户通过Repeater发送登录请求(请求71)
- 宏自动执行前置token请求(请求70)
- 使用新获取的token发送登录请求
局限性
- 无法直接处理token在请求头中的情况
- 配置相对复杂,需要理解请求流程
3. 宏+Extractor组合方法
适用场景
- 当前两种方法都无效时
- 特别是当token出现在请求头中时
前置准备
- 安装"Extractor"插件(通过BApp Store)
- 分析请求流程:
- 请求1:获取token的请求
- 请求2:使用token的主请求
配置步骤
宏配置
- 定义获取token的宏(仅包含请求1)
- 确保该宏在主请求前执行
Extractor配置
- 将两个请求包都发送到Extractor
- 配置Extractor:
- 从请求1的响应中提取token
- 将提取的token替换到请求2的请求头中
工作原理
- 宏负责在主请求前执行获取token的请求
- Extractor插件负责:
- 从响应中匹配token
- 自动替换后续请求中的token值
示例流程
- 请求87:获取token(值为407667d008b147199d174681a655aea0)
- 请求88:使用相同token值的主请求
优势
- 可以处理请求头中的token
- 自动化程度高,减少手动操作
综合对比
| 方法 | 适用场景 | 配置复杂度 | 处理请求头能力 | 自动化程度 |
|---|---|---|---|---|
| CSRF Token Tracker | 简单参数token | 低 | 否 | 中 |
| 宏定义 | 需要前置请求 | 中 | 有限 | 高 |
| 宏+Extractor | 复杂场景/请求头 | 高 | 是 | 最高 |
最佳实践建议
- 优先尝试CSRF Token Tracker,配置简单
- 当方法1无效时,分析token获取流程:
- 如果需要前置请求 → 使用方法2(宏定义)
- 如果token在请求头 → 使用方法3(宏+Extractor)
- 测试时务必检查Burp的Logger++,确认token是否正确获取和替换
- 首次请求必须使用有效token,否则后续自动化会失败
通过这三种方法,可以覆盖绝大多数反CSRF爆破的场景,有效提高渗透测试效率。