Repeater Strike:AI赋能手动测试,高效挖掘IDOR漏洞

本文介绍了PortSwigger Research开发的Repeater Strike扩展,利用AI技术自动分析Repeater流量,生成智能正则表达式,高效检测IDOR等漏洞,提升手动测试效率,减少重复劳动。

Repeater Strike:手动测试,效率倍增 | PortSwigger Research

Gareth Heyes
研究员
@garethheyes

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

手动测试不必重复繁琐。本文介绍Repeater Strike——一款基于AI的Burp Suite扩展,旨在自动化检测IDOR及类似漏洞。通过分析Repeater流量,Repeater Strike根据测试的请求和响应生成智能正则表达式,并在代理历史记录中应用这些正则表达式,以发现相关问题,让您轻松将单个漏洞转化为一系列可操作的结果。

在PortSwigger Research,我们正尝试利用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
6
7
"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模型非常智能。它们可以巧妙地处理和变异数据。值得注意的是,我没有提供关于漏洞的具体指令,它可以从我提供的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
29
30
31
32
{
    "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 Rule。您可能认为这会消耗大量AI令牌,但实际上创建此特定Strike Rule仅花费了61个令牌,且规则生成后不再使用额外令牌!

如果AI生成的正则表达式失败,没问题,我创建了一个Strike Rule编辑器,让您可以编辑生成的Strike Rule,点击保存,然后扫描代理历史记录,而无需额外令牌。

开发挑战
在开发过程中,我遇到了几个挑战。一个主要问题是处理大型响应——虽然AI可以有效地解释较小的响应,但对于像Facebook这样的网站的长响应则表现不佳。我最初截断了数据,但这导致重要上下文丢失。

另一个障碍是AI输出的不一致性。例如,在生成正则表达式时,它有时未能正确转义元字符,导致运行时错误。解决方法是程序化地在异常发生时转义这些字符。

更广泛的概念也难以泛化。虽然系统可以在特定站点检测IDOR等问题,但创建足够灵活的正则表达式模式以跨不同站点工作,而不过于站点特定,是一项挑战。

我尝试使用响应差异分析作为提取有意义信息的方法,通过过滤噪音(如无关紧要的头部)并仅关注变化的部分。

最终,我没有时间完全解决这个问题——但也许您可以。

您能找到一种优雅的解决方案,可靠地隔离有意义的UI变化并将其馈送给AI吗?让我们进一步推动它。

相关标签: AI, Burp Suite, burp extender, Hacking Tools, research tools

相关研究:

  • Document My Pentest: you hack, the AI writes it up! (2025年4月23日)
  • Shadow Repeater: AI-enhanced manual testing (2025年2月20日)
  • Introducing SignSaboteur: forge signed web tokens with ease (2024年5月22日)
  • Using form hijacking to bypass CSP (2024年3月5日)
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计