Burp宏与会话处理实战指南

本文详细演示如何利用Burp Suite的宏功能处理动态CSRF令牌,通过实际代码示例展示会话管理配置,解决Intruder爆破过程中令牌更新的技术难题。

Burp宏与会话处理

我使用Burp Suite多年,但直到几周前才首次接触宏功能。当时遇到一个需要利用Intruder进行暴力破解的表单,该页面通过JavaScript函数在每个请求中嵌入CSRF令牌。为了实现暴力破解,我必须从JavaScript提取令牌并确保每个请求都携带该令牌。在查阅文档后,我创建测试应用验证配置流程,现将完整操作过程记录如下。

测试环境搭建

目标应用代码如下(可从GitHub Gist获取或使用在线版本):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?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";
        }
    } else {
        $message = "Token not sent in POST";
    }
}
$token = md5(mt_rand());
$_SESSION['token'] = $token;
?>
<!DOCTYPE html>
<html>
<head>
    <title>Burp Suite Macro Demo Test Page</title>
</head>
<body>
    <h1>Burp Suite Macro Test Form</h1>
    <p><?=$message?></p>
    <form method="post" action="<?=htmlentities($_SERVER['PHP_SELF'])?>">
        <input type="submit" value="Submit" name="submit" />
        <input type="hidden" value="" name="token" id="token" />
    </form>
    <script>
        document.getElementById("token").value = "<?=htmlentities($token)?>";
    </script>
</body>
</html>

核心逻辑:

  • GET请求:生成令牌存储于会话,JavaScript将令牌注入表单隐藏域
  • POST请求:比对提交令牌与会话令牌,返回验证结果
  • 关键限制:Burp默认不执行JavaScript,直接使用Repeater/Intruder会导致令牌不匹配

攻击配置流程

1. 基础代理设置

配置Burp代理捕获浏览流量,访问测试页面并多次提交表单填充代理历史记录。

2. 创建宏

  • 进入Project optionsSessions → 点击Macros区域的Add
  • 在宏录制对话框中选择一个POST请求
  • 命名宏(如"Macro Demo")后点击Configure Item

3. 参数配置关键步骤

  • 在参数配置界面点击Add添加自定义参数位置
  • 命名参数为"token",在响应中高亮令牌值所在位置
  • 此举指示Burp从JavaScript动态提取令牌值

4. 会话规则绑定

  • Session Handling Rules点击Add创建新规则
  • 添加规则动作选择Run a macro
  • 选择已创建的宏,保持默认参数更新设置
  • Scope标签页设置目标URL范围

5. 效果验证

将历史POST请求发送至Repeater测试:

  • 成功时响应显示"Success"
  • 每次请求令牌参数自动更新
  • Intruder爆破可无缝处理动态令牌

技术要点总结

通过宏配置实现会话令牌的自动化管理,有效绕过CSRF防护机制。此方法适用于需要处理动态参数的渗透测试场景,显著提升自动化测试效率。

参考资源

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计