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

本文介绍PortSwigger研发的Repeater Strike扩展,利用AI分析Repeater流量生成智能正则表达式,自动化检测IDOR等漏洞,通过代理历史扫描扩大测试范围,提升安全测试效率。

Repeater Strike:手动测试的智能化增强

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研究中,我们正尝试用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模型超级智能。它们可以非常巧妙地处理数据并对其进行变异。值得注意的是,我并未给出关于漏洞的具体指令,它可以从我提供的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吗?让我们进一步推动它。

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

返回所有文章

本页面需要JavaScript以增强用户体验。

相关研究:

  • Document My Pentest: 您黑客攻击,AI撰写报告! - 2025年4月23日
  • Shadow Repeater: AI增强的手动测试 - 2025年2月20日
  • 介绍SignSaboteur: 轻松伪造签名Web令牌 - 2024年5月22日
  • 使用表单劫持绕过CSP - 2024年3月5日
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计