Repeater Strike:AI赋能的IDOR漏洞自动化挖掘技术

本文详细介绍PortSwigger研发的Repeater Strike扩展,该工具通过AI智能生成正则表达式,自动化检测IDOR等漏洞,显著提升手动测试效率,包含技术实现细节与开发挑战分析。

Repeater Strike:手动测试的智能化增强 | PortSwigger研究

Gareth Heyes
研究员
@garethheyes

发布时间:2025年7月15日 13:46 UTC
更新时间:2025年7月15日 13:46 UTC

手动测试不必重复劳动。本文介绍Repeater Strike——一款新型AI驱动的Burp Suite扩展,专为自动化挖掘IDOR及类似漏洞而设计。通过分析Repeater流量,该工具基于测试中的请求和响应生成智能正则表达式,并在代理历史记录中应用这些正则表达式来发现相关问题,让您以最小工作量将单个漏洞转化为更广泛的可操作发现。

在PortSwigger研究中,我们正尝试用AI开发半自动化工具以增强安全测试。我的一个想法是利用AI寻找变体,因此构建了Shadow Repeater。结果证明这非常酷,且完美契合AI的优势。我思考是否能超越仅生成变体:能否基于Repeater中的操作扫描代理历史记录以发现更多问题。

我实验了三种不同的漏洞检测方法:Java编译、正则表达式和基于差异的分析。我花时间使用动态生成的Java类创建扫描检查,但很快意识到可用多个正则表达式实现相同目标,于是将重点转向正则表达式。

第一步是使用AI识别漏洞并生成JSON对象以辅助后续处理:

1
2
3
4
5
6
7
8
{
   "param": {
        "values": ["wiener"],
        "name": "id",
        "type": "URL",
        "vulnerabilityClass": "IDOR"
    }
}

AI正确识别了测试目标,并注意到基于发送的请求,您正在测试带有名为id参数的URL。初始探测是针对wiener的😂。AI随后利用此探测尝试在响应中寻找唯一可识别内容:

1
2
3
4
5
"responseRegexes": [[
     "Your username is: wiener",
     "Your API Key is: [A-Za-z0-9]{32}",
     "<a href=\"/my-account\\?id=wiener\">My account<\/a>"
  ]]

AI识别了用户名反射和API密钥,我指示其匹配数据结构以便发现更多内容而非特定密钥。接着,它在生成新Strike Rule前通过带探测的请求尝试复现发现。若复现成功,Repeater Strike会提示您输入Strike Rule名称。

下一步是变异探测和响应正则表达式。这在一年前不可能,但如今AI模型超级智能,能巧妙变异数据。值得注意的是,我未提供关于漏洞的具体指令,AI可从给出的JSON结构自行推导:

 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
{"mutatedProbesToUse": [
            "admin",
            "testuser",
            "anonymous",
            "user123",
            ...],
        "mutatedResponsesRegexes": [
            [
                "Your username is: admin",
                "Your API Key is: [A-Za-z0-9]{32}",
                "<a href=\"/my-account\\?id=admin\">My account<\/a>"
            ],
            [
                "Your username is: testuser",
                "Your API Key is: [A-Za-z0-9]{32}",
                "<a href=\"/my-account\\?id=testuser\">My account<\/a>"
            ],
            [
                "Your username is: anonymous",
                "Your API Key is: [A-Za-z0-9]{32}",
                "<a href=\"/my-account\\?id=anonymous\">My account<\/a>"
            ],
            [
                "Your username is: user123",
                "Your API Key is: [A-Za-z0-9]{32}",
                "<a href=\"/my-account\\?id=user123\">My account<\/a>"
            ],
            ...}

AI变异探测和正则表达式后,即可扫描代理历史记录寻找此行为。您甚至可设置Repeater Strike为每个发送的Repeater请求动态创建Strike Rules。可能认为这会消耗大量AI令牌,但实际上创建此特定Strike Rule仅花费61令牌,且规则生成后不再消耗令牌!

若AI生成的正则表达式失败,无需担心:我创建了Strike Rule编辑器,允许您编辑生成的Strike Rule,保存后即可扫描代理历史记录,且无需额外令牌。

开发挑战
开发过程中我遇到多个挑战。主要问题之一是处理大响应——AI能有效解析较小响应,但面对如Facebook等站点的长响应时表现不佳。我最初截断数据,但这导致重要上下文丢失。

另一障碍是AI输出不一致。例如,生成正则表达式时,有时未能正确转义元字符,引发运行时错误。解决方案是在异常发生时编程转义这些字符。

广义概念的泛化也较困难。系统可检测特定站点的IDOR问题,但创建足够灵活的正则表达式模式以跨站点工作而非过于站点特定是一大挑战。

我尝试响应差异分析,通过过滤噪声(如无关标头)并仅关注变化部分来提取有意义信息。

最终因时间不足未完全解决——但或许您能找到方案。
您能否找到优雅方案可靠隔离有意义的UI变化并馈送给AI?让我们进一步推进。

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