2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

大模型如何赋能 Web 渗透测试?

发布日期:2025-07-15 18:08:47 浏览次数: 2283
作者:阿里云开发者

微信搜一搜,关注“阿里云开发者”

推荐语

大模型如何革新Web渗透测试?揭秘AI驱动的自动化漏洞检测方案,让安全测试更智能高效。

核心内容:
1. 传统Web安全检测方法的局限性分析
2. 大语言模型在漏洞检测中的创新应用
3. 基于MCP Server的自动化测试实践案例

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家


背景和目标

在网络安全领域,漏洞检测是一项至关重要且复杂的工作。随着Web应用规模的扩大和攻击手段的多样化,传统的人工检测方式已难以应对日益增长的安全需求。传统Web安全扫描器依赖预设规则库和模式匹配,难以应对新型漏洞及复杂业务逻辑中的隐性风险,且易产生误报和漏报;人工测试虽能深入分析漏洞,但受限于人力成本高、执行周期长,面对海量代码和频繁更新的应用时效率低下。

而大语言模型(LLM)凭借其强大的上下文理解能力,可快速解析业务逻辑、生成针对性测试用例,并模拟多维度攻击路径,显著提升漏洞发现的覆盖率与准确性。通过LLM辅助自动化测试,不仅能弥补传统工具的局限性,还能加速人工复核流程,成为应对现代Web安全挑战的必要补充。

本文以web安全渗透利器集成MCP server为基础来进行了此项探索与实践,介绍一种基于cline的自动化漏洞检测方案,通过其MCP Server服务,实现AI模型对BurpSuite工具的智能调度与控制,从而完成高效的Web应用漏洞自动化检测。

环境搭建

本项目原理大致是:

  • 直接以sse集成MCP Server到burpSuite插件的方式,cline通过sse方式连接MCP Server。

  • cline通过mcp tools获取到Proxy模块的历史流量信息后调用大模型研判原始流量里面的query参数、body参数等可能存在web漏洞的地方尽可能插入足够多的payload,然后再次调用mcp tools发送出去。

  • 大模型在调用mcp tools获取到修改后的流量的response信息后和原始流量的response作对比,智能化研判当前测试的接口是否存在web安全漏洞。

环境前置条件

下面是运行环境的基本条件:

  • burpSuite Pro最新版:因为新版本的burpSuite才能支持插件新版本的MontoyaApi

  • MCP Kotlin sdk:https://github.com/modelcontextprotocol/kotlin-sdk.git

运行环境

按照下面操作步骤即可:

  • 在编写的Kotlin MCP Server的项目根目录下面执行mvn clean package编译目标jar包。

  • 在burp的Extensions模块加载此jar包,同时在插件的UI上面点击StartServer来启动MCP Server。

  • 在cline客户端上面通过Remote Servers里面加载此MCP Server,默认地址是http://127.0.0.1:9999/sse

实践操作

本次笔者这里以web安全漏洞sql注入为举例进行探索。

明确告诉大模型三个步骤:

  • 首先需要获取所有的历史流量信息;

  • 按照历史流量信息依次顺序分析流量信息里面的参数是否可能存在sql注入漏洞,如果可能存在,那么就会在所有可能存在漏洞的地方插入payload再调用工具发送修改后的http报文来进行安全测试;

  • 最后根据修改后的http报文的响应来最终判断是否存在安全漏洞,并调用mcp tools上报安全漏洞信息;

这三个操作步骤分别是:

大模型在获取到burp的所有历史流量信息以后,智能判断流量里面可能存在漏洞的参数并且替换:

修改了http请求里面的body同时添加了payload,然后调用工具发送到burp执行请求:

大模型在获取到修改后的http报文发送后返回的响应,会根据响应开判断是否存在安全漏洞,并再次调用mcp tools上报此次安全测试是否存在安全漏洞:

同时大模型会自动根据response的变化来决定是否需要继续和更换更多的payload进行继续调用tools进行测试:

笔者将所有的流量都转到了burp插件上面,我们可以看到大模型插入payload后修改的流量信息:

从上面图片可以看到,大模型已经成功在流量里面它认为存在sql注入的参数里面都插入了payload,包括了url里面的query参数,还有body里面的参数。

当然,前面的几个步骤的Approve都有用户的点击参与,实际上这里通过在cline上面设置可以完成做到Auto Approve来实现100%自动化。

困难与挑战

在本次实践中遇到了一些问题以及应对的挑战,主要有下面几点:

大模型LLM API的token限制

在我的另外一篇文章里面其实已经提到这个token限制的问题,在这里再次遇到。我理解这是一个需要大模型实际解决的问题,因为在实际的http报文分析过程中,很容易超出65536 token的限制:

比如我在让大模型调用获取burpSuite的所有历史记录的mcp tool时候就出现了(如果这个时候burpSuite的历史记录足够多,或者存在超大型Content-Length)。这个时候的解决办法就需要下面2点:

  • 大模型API调用突破65536 token的限制。

  • 优化mcp tools,这也是目前比较好实现的:

    fun httpRequestResponseFilter(history:List<ProxyHttpRequestResponse>): List<HttpRequestResponse> {    val responseExcludePatterns = listOf("^image/.*", "^application/pdf.*","^text/css.*")    val historyNew = history.filter {        val hasResponse = it.hasResponse()        val hasContentType = hasResponse && it.response().hasHeader("Content-Type")        // 条件 1: 无 Response → 保留        if (!hasResponse) return@filter true        // 条件 2: 有 Response 但无 Content-Type → 保留        if (!hasContentType) return@filter true        // 条件 3: 有 Content-Type → 过滤匹配的正则表达式        val contentType = it.response().headerValue("Content-Type")!!        !responseExcludePatterns.any { pattern ->            contentType.matches(Regex(pattern))        }    }.map {        HttpRequestResponse.httpRequestResponse(            it.request(),            it.response(),            it.annotations()        )    }    return historyNew}

    大模型在原始HTTP报文插入payload格式问题

    大模型在原始HTTP报文插入payload的时候,有时候出现了格式混乱为非法http报文导致web服务端无法正常解析和响应。

    这个case是因为在cline上看到一个web服务端响应无法识别的错误,如下图所示:

    因为此mcp server已经有UI页面,经过排查在burp上面看一下报文明显红框少了一个空格导致HTTP报文格式不对:

    解决办法就是让大模型学习一下HTTP报文的格式,然后重新调用mcp tools 发现OK:

    大模型准确调用tools问题

    这里主要有2类问题:大模型正确调用tools 和大模型正确顺序执行tools。

    首先第一个大模型MCP的共性问题。此问题出现在大模型调用mcp tools失败或者返回的结果不符合预期的时候,大模型和客户端会存在温度问题:

    在我再次提示错误以后,大模型自作主张的添加一个名叫includeDetails的参数:

    再次提示:

    终于执行成功:

    从目前的实际操作来看,解决方案是尽可能的在调用tools之前需要尽量精确的提示词,以及在对tools的编码的时候对inputSchema、description尽量准确描述。

    第二个正确顺序执行tools的问题表现为在前面的提示词中,理想情况是大模型在调用一次安全漏洞检测tool后,会顺序执行安全漏洞上报tool。但是非常不幸的是在我把整个流程都开启Auto Approve后发现安全漏洞检测tool执行了10次,但是安全漏洞上报tool只执行了2次。也就是说大模型并没有在每次做了安全检测后都上报本次payload是否存在安全漏洞。

    此问题的解决办法目前是强化提示词,例如:

      调用burp-kotlin-mcp-server的工具获取所有的http消息的历史记录,同时分析每个请求是否可能存在sql注入漏洞,如果可能存在,在尽可能的生成足够多和不同的的payload以后原始的请求里面插入payload以后直接返回修改后的请求,当然如果payload是插入到url的query参数里面那么必须进行url编码,并将请求通过burp-kotlin-mcp-server的工具发送回去。同时在接收到修改后的http报文的响应后根据想要判断是否存在安全漏洞,并调用工具上报是否存在对应的安全漏洞。这个过程需要循环执行,直到根据响应可以判断存在安全漏洞。
      需要强调的时候,每次执行漏洞检测工具后,都要顺序执行漏洞上报工具。

      HTTP报文二次加密问题

      在实际测试过程中发现部分流量里面的参数都经过了二次加密,那么大模型在为这些参数插入payload之前就必须要要进行二次加解密,但是实际上大模型并不知道加解密算法以及秘钥等信息导致无法正确的插入payload。

      此目前暂时还未进行探索和解决,遗留中......

      优势与不足

      从文章的前面部分可以看到大模型MCP在web漏洞挖掘方案的优势和不足都还是比较鲜明的。

      优势总体来说:MCP 智能体可以调用工具、发起 API 请求、处理数据、并运行面向用户的工作流。

      • 相比传统扫描器,大模型可以一次性在报文多个地方(包括URL里面的query参数,body里面的参数等大模型认为存在漏洞的地方)插入足够多的payload。

      • 相比传统扫描器,受限于研发或者作者对安全的理解payload总是有限。大模型在学习和训练的工程中相比传统扫描器,大模型收集的payload足够多。

      • 相比传统扫描器,大模型可以智能根据响应的不同来判断是否攻击成功。

      不足点以及待需要改进点在前面的困难与挑战中其实已经详细分析过,这里不再做过多介绍。

      这里还有一点,因为大模型需要理解输入和输出,在速度上面相比传统扫描器要慢一些。大模型的每一个payload执行的完整流程都需要5s左右,相比传统扫描器实在太慢。

      进一步拓展

      在实际的日常工作中,进一步探索在历史流量中发现web安全漏洞。

      • 在日常攻防演练中如果存在大量资产则可以使用AI+burp对资产进行指纹识别和历史漏洞探测+弱口令检测,省去一大笔时间,非常方便实用。

      • 目前想到能够比较好落地的web安全漏洞类型主要存在于越权、sql注入等可以直接从响应里面做判断的漏洞模型场景。

      53AI,企业落地大模型首选服务商

      产品:场景落地咨询+大模型应用平台+行业解决方案

      承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

      联系我们

      售前咨询
      186 6662 7370
      预约演示
      185 8882 0121

      微信扫码

      添加专属顾问

      回到顶部

      加载中...

      扫码咨询

      扫码登录
      登录即表示您同意《53AI网站服务协议》
      服务协议

      欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

      在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

      一、 定义

      本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

      会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

      知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

      二、 账号注册与登录

      登录方式:本网站支持以下登录方式,您可根据实际情况选择:

      微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

      手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

      账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

      实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

      未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

      三、 服务内容与规范

      知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

      服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

      禁止行为:您在使用服务时不得实施以下行为:

      利用技术手段批量爬取、下载、转存知识库内容;

      将知识库内容用于商业目的或未经授权地向第三方传播;

      干扰本网站正常运行或侵犯其他用户合法权益;

      发布违法违规信息或从事违反公序良俗的活动。

      四、 知识产权声明

      权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

      有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

      侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

      五、 个人信息保护

      我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

      您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

      您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

      六、 免责声明

      内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

      不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

      第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

      七、 违约责任

      如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

      如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

      八、 法律适用与争议解决

      本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

      因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

      九、 其他

      本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

      本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

      我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


      已查阅