Burp Suite集成MCP协议:AI驱动的智能安全测试实践
1. 项目概述:当Burp Suite遇见MCP,安全测试的“智能副驾”来了
如果你是一名Web安全测试工程师,或者对应用安全渗透测试有浓厚兴趣,那么Burp Suite这个名字对你来说一定如雷贯耳。作为行业标杆级的Web漏洞扫描与渗透测试平台,Burp Suite以其强大的代理、爬虫、扫描器和丰富的插件生态,成为了安全从业者手中的“瑞士军刀”。然而,在日常的漏洞挖掘和渗透测试中,我们常常会遇到一些重复性高、逻辑复杂或需要深度上下文分析的场景,比如对海量的请求/响应进行模式识别、自动化生成特定格式的测试载荷、或是根据某个新披露的CVE信息快速构建攻击链。这些工作虽然核心,但过程繁琐,消耗着测试人员大量的精力。
今天要聊的这个项目——rrsaldanha/burp-mcp-agents,就是为了解决这类痛点而生的。它本质上是一个为Burp Suite设计的MCP(Model Context Protocol)代理集合。简单来说,MCP是一种新兴的、旨在让大型语言模型(LLM)或AI助手能够安全、标准化地与各种工具、数据源进行交互的协议。你可以把它理解为AI的“标准插件接口”。而这个项目,则是在Burp Suite这个安全测试的“主战场”上,为AI助手(例如Claude Desktop、Cursor等内置了MCP客户端的工具)搭建了一系列专用的“武器操作台”。
想象一下这个场景:你在Burp中拦截到一个登录请求,需要快速测试SQL注入。传统方式是手动在参数后添加'、"、or 1=1--等载荷,然后观察响应。而通过MCP Agent,你可以直接向你的AI助手描述:“分析这个请求,为我生成10个针对该参数的高效SQL注入测试用例。”AI助手通过MCP协议调用对应的Agent,Agent理解你的意图,从Burp的上下文中获取请求详情,并利用内置的逻辑或调用外部知识库,瞬间生成一份结构化的测试用例列表,甚至可以直接帮你把测试请求发送出去并汇总结果。这不仅仅是“自动化”,更是“智能化”的辅助决策。
这个项目适合所有使用Burp Suite进行安全测试的人员,无论是希望提升效率的资深渗透测试工程师,还是正在学习安全测试、希望借助AI降低理解门槛的新手。它不改变Burp Suite的核心工作流,而是作为一个强大的增效插件,将AI的推理和生成能力无缝嵌入到你熟悉的工具环境中。接下来,我将为你深度拆解这个项目的设计思路、核心Agent的实现细节、如何部署与集成,以及在实际使用中会遇到哪些“坑”和技巧。
2. 核心架构与MCP协议深度解析
2.1 MCP协议:AI与工具世界的“通用语”
要理解burp-mcp-agents,必须先搞懂MCP是什么。MCP并非某个特定AI模型的功能,而是一个开放协议标准,由Anthropic公司提出并推动。它的核心目标是解决一个关键问题:如何让不同的AI助手(如Claude、GPT等)能够以一种安全、可控、标准化的方式,去调用千差万别的外部工具、数据库或API?
在没有MCP之前,如果你想在某个AI聊天界面里操作Burp Suite,可能需要自己写一个复杂的中间件,处理身份认证、数据格式转换、错误处理等一系列脏活累活,而且这个中间件可能只适配某一个AI产品。MCP的出现,相当于定义了一套“通用语”和“行为规范”。它主要包含几个核心概念:
- Server(服务器):提供具体工具能力的后端服务。在本项目中,
burp-mcp-agents就是一个MCP Server,它封装了对Burp Suite Extender API的调用能力。 - Client(客户端):想要使用这些工具能力的AI助手或应用程序。例如,Claude Desktop、Cursor IDE,或者任何实现了MCP Client协议的软件。
- Protocol(协议):基于JSON-RPC 2.0的通信规范。Server向Client宣告自己提供了哪些“工具”(Tools)和“资源”(Resources),Client则通过发送标准的JSON-RPC请求来调用这些工具。
为什么是MCP而不是其他?在AI智能体(Agent)领域,也有像LangChain这样的框架。但LangChain更像是一个用于构建AI应用的高级工具箱,它本身较重,且与具体AI模型耦合较深。MCP则更底层、更轻量、更专注于“连接”本身。它不关心AI模型内部如何思考,只关心“模型”如何安全地告诉“外部世界”要做什么,以及“外部世界”如何把结果安全地返回给“模型”。这种解耦使得burp-mcp-agents这样的工具服务可以独立开发,并能被任何兼容MCP的客户端使用,具备了极好的通用性和未来扩展性。
2.2 项目整体设计思路:以Burp为核心的Agent工厂
rrsaldanha/burp-mcp-agents项目的设计非常清晰:它本身是一个运行在本地或网络上的Java应用(MCP Server),通过Burp Suite的Extender API与Burp深度集成,同时通过MCP协议对外暴露一系列安全测试相关的“工具”。
它的工作流程可以概括为:
- 启动与注册:你将该项目作为插件加载到Burp Suite中,或者以独立进程运行并连接到Burp。同时,你在Claude Desktop等客户端中配置该MCP Server的地址(如
http://localhost:8080)。 - 能力宣告:客户端启动时,会向Server发起握手。Server会回复一个清单:“我这里有这些工具可用:
analyze_request(分析请求)、generate_payload(生成载荷)、scan_vulnerability(扫描漏洞)...” - 工具调用:当你在AI助手的对话中提出需求(如“帮我看下这个请求有没有SQL注入点”),AI助手会理解你的意图,判断需要调用
analyze_request工具,并通过MCP协议发送一个格式化的调用请求给Server。 - 执行与返回:Server收到请求后,通过Burp API获取当前选中的请求、站点地图数据或扫描状态,执行相应的分析或操作逻辑,然后将结果(可能是文本分析、结构化的数据或操作状态)通过MCP协议返回给客户端。
- 呈现结果:AI客户端将结果以自然语言的形式呈现给你,或者直接提供下一步的操作建议。
这种架构的优势在于:
- 非侵入式:AI助手并不直接“操作”Burp,而是通过Agent这个“翻译官”和“执行者”来间接完成。Burp的稳定性和安全性不受影响。
- 能力可扩展:项目的核心是一个个独立的“Agent”(工具实现)。社区可以很容易地根据需求开发新的Agent,比如一个专门用于解析JWT令牌的Agent,或者一个用于与漏洞数据库(如CVE)联动的Agent。
- 上下文感知:Agent可以访问Burp的实时上下文(如当前选中的请求/响应、站点地图、扫描队列),这使得AI的辅助建议极具针对性和准确性。
3. 核心Agent详解与实操部署
3.1 内置核心Agent能力拆解
根据项目源码和文档,burp-mcp-agents通常包含以下几类核心Agent,每一类都针对安全测试中的特定高频场景:
1. 请求/响应分析器(Request/Response Analyzer)这是最基础也最常用的Agent。它的核心功能是让AI能够“看到”Burp里的HTTP流量。
- 工具名称:可能类似
get_http_context或analyze_message。 - 输入:通常自动从Burp上下文中获取当前选中的请求或响应,或由用户指定一个URL/请求ID。
- 处理逻辑:Agent从Burp获取原始的HTTP报文(包括头、体、参数),可能进行一些预处理(如美化JSON、解码URL)。
- 输出:将结构化的HTTP信息(方法、URL、头、参数、Cookie、响应状态码、响应体摘要)以清晰的文本格式提供给AI。AI可以据此分析潜在的攻击面,比如:“这个
id参数看起来是数字型,可以尝试SQL注入;这个Authorization头是JWT,可以检查其是否可被破解。” - 实操价值:省去了你在AI对话框里手动粘贴大段HTTP请求的麻烦,实现了“所见即所得”的分析。
2. 智能载荷生成器(Payload Generator)从“分析问题”到“解决问题”的关键一步。这个Agent将常见的漏洞利用技术封装成可调用的工具。
- 工具名称:可能类似
generate_xss_payloads、generate_sqli_payloads、generate_os_command_payloads。 - 输入:用户通过自然语言描述需求,例如“为这个搜索框生成5个绕过WAF的XSS载荷”,AI会提取关键信息(漏洞类型、参数位置、数量、绕过要求)作为参数。
- 处理逻辑:Agent内部维护或调用一个载荷库。根据输入的参数(如漏洞类型、上下文编码要求),从库中筛选、组合甚至动态生成相应的测试字符串。例如,对于SQL注入,它可能生成基于布尔盲注、时间盲注、联合查询等不同技术的载荷变体。
- 输出:一个结构化的列表,每个载荷可能附带简短说明和使用场景。AI可以进一步建议:“建议先尝试载荷1和2,它们对大多数MySQL环境有效。”
- 实操价值:极大地扩展了测试人员的“武器库”,尤其是面对一些需要特定格式或编码的复杂漏洞时,AI能提供专业级的载荷方案。
3. 漏洞扫描辅助器(Scan Assistant)与Burp自带的扫描器进行联动,提升扫描的智能化水平。
- 工具名称:可能类似
run_passive_scan、audit_this_request、get_scan_issues。 - 输入:用户指令,如“对当前选中的请求进行主动扫描”,或“总结一下当前目标站点已发现的高危漏洞”。
- 处理逻辑:Agent调用Burp Scanner的API,启动扫描或查询扫描结果。它可能对扫描结果进行初步的聚合、排序和摘要。
- 输出:扫描任务的状态,或一份整理好的漏洞清单,包括漏洞类型、URL、风险等级和简要描述。
- 实操价值:将扫描器的“黑盒”操作变成了可对话的“白盒”协作。你可以让AI专注于分析某个可疑点,而让Agent去驱动扫描器执行重复的探测任务。
4. 会话与状态管理器(Session Manager)处理登录态、Cookie、CSRF令牌等与会话相关的复杂问题。
- 工具名称:可能类似
extract_cookies、check_session_validity。 - 输入:从当前请求或响应中提取会话信息。
- 处理逻辑:解析
Set-Cookie头,提取会话ID;或检查请求中的Cookie、Token是否有效、是否符合预期格式。 - 输出:会话信息的结构化表示,AI可以据此判断:“这个会话Cookie缺少
HttpOnly和Secure标志,存在被盗风险。”或者“这个CSRF Token在每个请求中都一样,存在缺陷。” - 实操价值:自动化完成会话安全性的基础检查,让测试者更专注于业务逻辑漏洞。
3.2 环境部署与集成实战
要让这套系统跑起来,需要完成“Burp侧”和“AI客户端侧”的两端配置。以下是基于常见环境的详细步骤。
前置条件准备:
- Burp Suite Professional:社区版功能受限,通常需要专业版以使用完整的Extender API。确保版本较新(如v2023.x以上)。
- Java运行环境:项目通常需要JDK 11或以上版本。
- AI客户端:已安装并配置好支持MCP的客户端,如Claude Desktop。这是目前最主流、集成最简便的选择。
步骤一:部署Burp-MCP-Agents Server
- 获取项目:从GitHub仓库(
rrsaldanha/burp-mcp-agents)克隆或下载最新Release版本的JAR文件。git clone https://github.com/rrsaldanha/burp-mcp-agents.git cd burp-mcp-agents - 构建项目:如果下载的是源码,需要使用Maven或Gradle进行构建。查看项目根目录的
pom.xml或build.gradle文件。
这个命令会生成一个包含所有依赖的“胖JAR”(fat JAR)文件,通常在# 假设使用Maven mvn clean compile assembly:singletarget/目录下,名称类似burp-mcp-agents-1.0-SNAPSHOT-jar-with-dependencies.jar。 - 加载到Burp:
- 打开Burp Suite,进入Extender标签页。
- 点击Add按钮,在弹出窗口中,将Extension Type选择为
Java。 - 点击
Select file...,找到并选择上一步生成的JAR文件。 - 点击
Next,Burp会加载该扩展。如果一切正常,Output或Errors面板会显示加载成功的日志,可能包含MCP Server启动的端口号(例如Started MCP server on port 8080)。
注意:有些部署方式可能不是作为Burp插件,而是作为一个独立的Java进程运行,并通过网络套接字与Burp的Extender API通信。具体方式请严格遵循项目README的说明。独立进程模式可能更稳定,但配置稍复杂。
步骤二:配置AI客户端(以Claude Desktop为例)
- 定位配置文件:Claude Desktop的MCP配置通常在一个JSON文件中。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- 编辑配置文件:如果文件不存在,则创建它。添加以下配置内容:
{ "mcpServers": { "burp-security-tools": { "command": "java", "args": [ "-jar", "/ABSOLUTE/PATH/TO/YOUR/burp-mcp-agents-jar-with-dependencies.jar" ], "env": { "BURP_HOST": "localhost", "BURP_PORT": "8090" // 这是Burp Extender API的监听端口,需与Burp设置匹配 } } } }- 关键参数解释:
command: 启动Server的命令,这里是java。args: 命令的参数,指向你构建的JAR文件的绝对路径。env: 传递给Server进程的环境变量。BURP_HOST和BURP_PORT至关重要,它们告诉Agent如何连接到Burp Suite。Burp的Extender API监听端口默认是8090,你可以在Burp的Extender -> APIs标签页中查看和修改。
- 关键参数解释:
- 重启客户端:保存配置文件后,完全退出并重新启动Claude Desktop。
- 验证连接:重启后,在Claude Desktop中新建一个对话。如果配置成功,你通常会在输入框上方或模型选择处看到一个小齿轮或插件图标,提示已连接MCP服务。你也可以直接输入“你现在可以使用哪些工具?”或“/tools”,AI助手应该会列出
burp-mcp-agents提供的所有工具(如analyze_request,generate_payload等)。
步骤三:首次连接与权限授予
这是最容易出错的一步。当MCP Server(即你的Agent)首次尝试通过localhost:8090连接Burp时,Burp会弹出一个安全警告对话框。
- 确保Burp Suite处于前台运行状态。
- 在Claude Desktop中尝试使用任何与Burp相关的功能(比如让AI分析当前请求)。
- 立即切换到Burp Suite窗口,你应该会看到一个名为“MCP Server wants to connect”或类似的提示框。
- 务必勾选“Remember this decision”,然后点击“Allow”。这样以后就不会再弹出此提示。
- 如果错过了这个对话框,或者连接失败,你可能需要去Burp的Extender -> APIs标签页,在“Suite APIs”列表中删除已有的连接记录,然后重新在Claude中触发一次操作。
至此,你的智能安全测试环境就搭建完成了。接下来,我们看看如何在实际工作中让它大显身手。
4. 实战应用场景与高级技巧
4.1 场景一:高效漏洞挖掘工作流
假设你正在测试一个Web应用,并已通过Burp代理拦截了所有流量。
传统流程:
- 在Proxy历史记录中找到一个感兴趣的请求(如
POST /api/user/search)。 - 右键,发送到Repeater。
- 手动修改
keyword参数,尝试各种注入载荷。 - 观察响应,判断是否存在漏洞。
- 重复步骤3-4,覆盖各种边界情况。
集成MCP Agent后的智能流程:
- 在Burp的Proxy历史记录中,选中那个
POST /api/user/search请求。 - 切换到Claude Desktop,直接输入:“分析我当前在Burp中选中的这个请求,找出所有可能的注入点,并针对每个点生成3个最有效的测试载荷。”
- AI通过MCP调用
analyze_request工具,获取请求的完整详情。 - AI分析请求结构,识别出
keyword(Body JSON)、userId(URL Query)等参数。 - AI针对
keyword(字符串类型)调用generate_xss_payloads和generate_sqli_payloads工具;针对userId(数字类型)调用generate_sqli_payloads工具。 - AI将生成的载荷列表,连同每个参数的风险评估和建议,以清晰的格式返回给你。你甚至可以要求它:“把针对
keyword的SQL注入载荷,直接帮我构造出完整的HTTP请求,复制到剪贴板。” - 你只需将生成的请求粘贴到Burp Repeater中发送,极大提升了从“发现”到“验证”的速度。
高级技巧:你可以让AI进行“上下文关联分析”。例如,在发现一个反射型XSS后,让AI“检查同一站点的所有历史请求,找出还有哪些参数可能存在类似的未过滤输出点”。AI可以通过Agent遍历Burp的站点地图,进行批量模式匹配。
4.2 场景二:复杂漏洞的自动化验证链
有些漏洞的验证步骤繁琐,比如OAuth授权码劫持、SSRF链式利用等。
以SSRF为例:
- 你发现一个
url参数,疑似存在SSRF。 - 你对AI说:“帮我验证这个
url参数是否存在SSRF。首先,使用generate_payload工具生成一组用于探测内网服务和元数据的SSRF载荷(如访问169.254.169.254,localhost,file:///etc/passwd)。然后,使用scan_vulnerability工具,用这些载荷对当前请求发起扫描,并监控响应时间和长度差异。” - AI会协调多个Agent工作:生成载荷 -> 驱动Burp发送测试请求 -> 收集响应 -> 分析差异(如响应时间变长可能表示后端连接了慢速内网服务,特定关键词出现则证明漏洞存在)。
- AI最终给你一份报告:“参数存在SSRF。载荷
http://169.254.169.254/latest/meta-data/返回了AWS元数据信息,证明可以访问内网元数据服务。风险等级:高危。”
这个过程将原本需要手动构造多个请求、设置不同攻击服务器(如Burp Collaborator)并分析结果的复杂流程,简化为一句指令。
4.3 场景三:报告编写与知识查询
渗透测试的最后一步是编写报告。AI可以成为你的得力助手。
- 漏洞描述标准化:你可以让AI“根据Burp中已确认的‘SQL注入’漏洞详情,按照OWASP Top 10的格式,生成一段包含漏洞描述、重现步骤、风险等级、修复建议的专业报告文本。”
- 关联CVE信息:发现一个使用了有漏洞的组件(如
jQuery 1.8.0)。你可以问:“这个版本的jQuery有哪些已知的CVE?” AI可以通过MCP调用一个潜在的query_cve工具(如果项目未来集成),或者利用其自身的知识库,给出CVE编号和简要说明,你甚至可以要求它“生成一个用于验证CVE-XXXX-XXXX的测试POC”。
4.4 性能调优与安全注意事项
性能考量:
- 网络延迟:MCP通信基于HTTP/JSON-RPC,频繁调用可能会有微小延迟。对于需要实时交互的场景,建议将MCP Server和AI客户端都部署在同一台高性能机器上。
- Burp资源占用:每个Agent调用都可能触发Burp API操作。避免在AI对话中一次性发起过于庞大的批量操作(如“扫描整个站点地图”),这可能导致Burp暂时无响应。建议分阶段、分模块进行。
- Token消耗:AI助手(如Claude)的每次对话和工具调用都会消耗其上下文窗口(Token)。包含大量HTTP原始报文的长对话会快速消耗Token。一个技巧是:让AI先分析,然后要求它“仅总结关键发现和下一步建议”,而不是每次都返回完整的请求/响应数据。
安全与隐私警告:
这是重中之重!你正在让一个AI助手访问你的Burp Suite,而Burp里可能包含高度敏感的客户数据、生产环境流量、未公开的漏洞信息。
- 本地化部署是底线:确保
burp-mcp-agentsServer、AI客户端(如Claude Desktop)以及它们之间的所有通信,都运行在你的本地环境或完全受控的内网环境中。绝对不要将MCP Server暴露在公网。 - 审查AI客户端的隐私政策:了解你使用的AI助手(如Claude)是否会记录或使用你的对话数据用于模型训练。对于高度敏感的项目,考虑使用明确承诺数据不用于训练的版本或本地化模型。
- 最小权限原则:在Burp中为MCP连接授予权限时,思考是否真的需要所有API权限。虽然目前项目可能要求较全的权限,但未来如果支持细粒度控制,应遵循最小权限原则。
- 敏感信息脱敏:在让AI分析请求前,如果请求中包含明文的API密钥、密码、身份证号等,最好先在Burp中手动替换为占位符(如
[REDACTED])。虽然AI在本地处理,但养成良好的安全习惯至关重要。
5. 常见问题排查与进阶玩法
5.1 连接与配置问题速查表
| 问题现象 | 可能原因 | 排查步骤 |
|---|---|---|
| Claude Desktop中不显示Burp工具 | 1. MCP配置错误。 2. Server未启动。 3. 客户端未重启。 | 1. 检查claude_desktop_config.json格式和JAR路径。2. 查看Burp Extender的Output或系统控制台,确认Server启动日志。 3. 完全退出并重启Claude Desktop。 |
| AI调用工具时报“连接失败”或超时 | 1. Burp API端口不对。 2. Burp未允许连接。 3. 防火墙/安全软件拦截。 | 1. 确认BURP_PORT(默认8090)与BurpExtender -> APIs中显示的端口一致。2. 检查Burp是否有未处理的连接授权弹窗。 3. 临时关闭防火墙或添加规则,允许本地回环地址(127.0.0.1)的对应端口通信。 |
| 工具调用成功,但返回“无法获取当前请求” | 1. Burp中未选中任何请求。 2. Agent与Burp的上下文同步问题。 | 1. 确保在Burp的Proxy、Repeater等标签页中,有一个HTTP消息处于选中状态。 2. 尝试在Burp中先点击一下目标请求,再在AI中重试。 |
| Server启动报Java版本错误 | JDK版本不兼容。 | 项目通常需要JDK 11+。在终端运行java -version确认。安装或切换至合适版本。 |
| 加载JAR后Burp Extender显示错误 | 1. JAR文件损坏或不完整。 2. 依赖冲突。 3. Burp版本不兼容。 | 1. 重新从官方仓库下载或构建JAR。 2. 查看Burp Extender的Errors标签页具体错误信息。 3. 检查项目README,确认支持的Burp版本。 |
5.2 自定义与扩展:打造你的专属Agent
burp-mcp-agents的魅力在于其可扩展性。如果你发现现有的Agent不能满足你的特定需求(比如需要集成内部漏洞库、需要特定的编码转换),你可以尝试开发自己的Agent。
扩展开发的基本思路:
- 理解项目结构:查看源码,通常有一个
Agent基类或接口,定义了工具的名称、描述、输入参数和execute执行方法。 - 创建新Agent类:继承基类,实现你的逻辑。例如,创建一个
JWTAnalyzerAgent,它的execute方法会从Burp当前请求中提取JWT,然后调用io.jsonwebtoken库进行解析,检查算法、过期时间、签名有效性等。 - 注册Agent:在主程序或配置文件中,将你的新Agent类添加到Agent列表中。
- 重新构建与部署:将新功能打包进JAR,重新加载到Burp。
一个简单的概念示例(伪代码):
public class CustomHeaderAnalyzerAgent implements McpAgent { @Override public String getName() { return "analyze_custom_headers"; } @Override public String getDescription() { return "分析HTTP头中的安全配置"; } @Override public List<Parameter> getParameters() { ... } // 定义输入参数 @Override public Object execute(Map<String, Object> args, IBurpExtenderCallbacks callbacks) { // 1. 通过callbacks获取当前请求 IHttpRequestResponse message = callbacks.getSelectedMessages()[0]; // 2. 解析请求头 List<String> headers = callbacks.getHelpers().analyzeRequest(message).getHeaders(); // 3. 分析安全头(如CSP, HSTS, X-Frame-Options) Map<String, String> analysis = new HashMap<>(); for (String header : headers) { if (header.startsWith("Content-Security-Policy:")) { analysis.put("CSP", "存在,需进一步分析策略强度。"); } else if (header.startsWith("Strict-Transport-Security:")) { analysis.put("HSTS", "存在。"); } // ... 其他检查 } // 4. 返回分析结果 return analysis; } }5.3 与其他工具链的融合思考
burp-mcp-agents开启了一扇门,它预示着安全测试工作流与AI深度融合的未来。你可以进一步思考:
- 与CI/CD集成:在自动化安全测试流水线中,一个AI驱动的Agent可以分析SAST/DAST工具的初步结果,去重、排序、验证误报,甚至编写初步的漏洞工单描述。
- 知识库增强:让Agent不仅能操作Burp,还能查询本地或内部的漏洞知识库、安全开发规范文档,使它的建议更贴合你所在组织的实际情况。
- 多工具协同:一个“超级Agent”可以同时协调Burp、Nmap、sqlmap等多个工具。你只需要告诉AI:“对这个IP进行Web端口探测和漏洞扫描。” AI就能通过不同的MCP Server驱动Nmap扫描端口,发现80端口后,再驱动Burp进行爬取和扫描。
这个项目目前可能还处于早期阶段,但它的设计理念非常先进。它没有试图创造一个取代人类的AI黑客,而是专注于打造一个让人类黑客变得更强大、更高效的“智能副驾”。在实际使用中,最大的体会是,它改变了你与工具的交互模式——从“手动操作”变成了“下达指令”。这要求你作为测试者,需要更专注于战略层面的思考:我要测试什么?攻击面在哪里?而把战术层面的重复性工作,交给这位不知疲倦的智能助手。
