MCP技术:渗出测试从自动化到智能化

打印 上一主题 下一主题

主题 1876|帖子 1876|积分 5628

在人工智能快速发展的今天,如何让AI更高效地与实际世界交互,成为许多开发者和研究者关注的焦点。MCP(Model Context Protocol)技术作为一种创新的工具集成方案,为AI提供了一种“双手”的能力,使其能够通过调用外部工具完成复杂任务。本文将展示在实际场景中的应用。
情况搭建

在开始构建MCP工具之前,我们需要先搭建一个稳固的工作情况。以下是详细的情况配置步骤:
初始化项目

起首,我们需要初始化一个项目目录,这将作为我们后续开发的基础。运行以下下令:
  1. uv init dirsearch-mcp-server
复制代码
这一步会创建一个名为dirsearch-mcp-server的目录,并初始化项目结构。
注:
uv 是一个挺全面的python依赖管理工具,但本人不用python做主力很久,略有陌生,按照大家的推荐也使用的uv。
这个项目名称原本是想用来连接dirsearch使用的,怎样情况题目一直搞不定,遂怒,决定使用 go run main.go 运行自编写的go程序,情况报错,亦怒, 直接 go build 编译执行。
创建Python虚拟情况

为了确保开发情况的隔离性和稳固性,我们使用Python虚拟情况。进入项目目录后,运行以下下令:
  1. cd dirsearch-mcp-server
  2. uv venv
复制代码
这将创建一个名为.venv的虚拟情况,全部依赖包都将安装在这个情况中,避免与其他项目产生冲突。
激活虚拟情况

激活虚拟情况是使用MCP工具的条件。根据你的操作系统,运行以下下令:
  1. .venv\Scripts\activate
复制代码
激活后,你的下令行提示符会显示(venv),表现虚拟情况已成功激活。
安装依赖

接下来,我们需要安装MCP的依赖包。运行以下下令:
  1. uv add mcp[cli]
复制代码
这将安装MCP的核心库及其下令行接口(CLI),为后续开发提供支持。
创建MCP服务器:赋予AI执行能力

在情况配置完成后,我们可以开始创建一个MCP服务器。以下是详细的实现代码:
  1. import subprocess  
  2. import time  
  3. from pathlib import Path  
  4.   
  5. from mcp.server.fastmcp import FastMCP  
  6.   
  7. # Initialize FastMCP server  
  8. mcp = FastMCP("beian-query-server", log_level="ERROR")  
  9.   
  10. @mcp.tool()  
  11. async def run_beian_query(domain: str, timeout: int = 300) -> dict:  
  12.     """  
  13.     执行备案信息查询工具  
  14.   
  15.     参数:  
  16.         domain (str): 要查询的域名 (如 baidu.com)  
  17.         timeout (int): 最大执行时间(秒)  
  18.   
  19.     返回:  
  20.         dict: 包含执行结果的字典  
  21.     """  
  22.     start_time = time.time()  
  23.     result = {  
  24.         "status": "pending",  
  25.         "command": "",  
  26.         "returncode": None,  
  27.         "stdout": "",  
  28.         "stderr": "",  
  29.         "duration": 0.0  
  30.     }  
  31.     try:  
  32.         # 配置固定参数  
  33.         target_dir = r"E:\Script\GoStore\RedTeam\tools\ToolsForBeian"  
  34.         exe_path = str(Path(target_dir) / "beian.exe")   
  35.         go_cmd = [exe_path, "info", "-i", domain]         
  36.   
  37.         # 验证环境  
  38.         if not Path(exe_path).exists():  # 关键修改点3  
  39.             raise FileNotFoundError(f"beian.exe not found in {target_dir}")  
  40.   
  41.         # 记录完整命令  
  42.         result["command"] = " ".join(go_cmd)  
  43.   
  44.         # 执行命令  
  45.         process = subprocess.run(  
  46.             go_cmd,  
  47.             cwd=target_dir,  
  48.             stdout=subprocess.PIPE,  
  49.             stderr=subprocess.PIPE,  
  50.             timeout=timeout,  
  51.             encoding='utf-8',  
  52.             errors='replace'  
  53.         )  
  54.   
  55.         # 记录结果  
  56.         result.update({  
  57.             "status": "success",  
  58.             "returncode": process.returncode,  
  59.             "stdout": process.stdout.strip(),  
  60.             "stderr": process.stderr.strip(),  
  61.             "duration": round(time.time() - start_time, 2)  
  62.         })  
  63.   
  64.     except subprocess.TimeoutExpired as e:  
  65.         result.update({  
  66.             "status": "timeout",  
  67.             "stderr": f"执行超时 ({timeout}s)",  
  68.             "duration": timeout  
  69.         })  
  70.     except Exception as e:  
  71.         result.update({  
  72.             "status": "error",  
  73.             "stderr": str(e),  
  74.             "duration": round(time.time() - start_time, 2)  
  75.         })  
  76.   
  77.     return result  
  78.   
  79. if __name__ == "__main__":  
  80.     mcp.run(transport="stdio")
复制代码
上述 exePath 中的beian.exe 就是编译后的程序名称
代码剖析


  • 初始化MCP服务器
    使用FastMCP类创建一个服务器实例,指定服务器名称为beian-query-server,并将日志级别设置为ERROR,以减少不必要的输出。
  • 定义工具函数
    通过@mcp.tool()装饰器,我们将run_beian_query函数注册为一个MCP工具。这个函数接收两个参数:domain(域名)和timeout(超时时间),并返回一个包罗执行结果的字典。
  • 工具逻辑

    • 配置工具路径:指定beian.exe的路径,并验证其是否存在。
    • 执行下令:通过subprocess.run执行备案查询下令,并捕获输出和错误信息。
    • 结果处理:根据执行结果更新状态、返回码、输出内容和执行时间。

配置MCP Client

创建好 server 后,就需要对client举行配置了,由于 vscode 中 cline  插件很好的支持了 mcp server 功能,可以节省我们创建 mcp client 的步骤 ,但是使用时需要举行相干配置,以下是配置文件的内容:
  1. {
  2.   "mcpServers": {
  3.     "beian-query-server": {
  4.       "name": "调用golang工具的备案查询工具",
  5.       "key": "dirsearch-mcp-server",
  6.       "command": "uv",
  7.       "args": [
  8.         "--directory",
  9.         "E:\\Script\\PyStore\\dirsearch-mcp-server\",
  10.         "run",
  11.         "--with",
  12.         "mcp",
  13.         "mcp",
  14.         "run",
  15.         "main.py"
  16.       ],
  17.       "disabled": false,
  18.       "autoApprove": []
  19.     }
  20.   }
  21. }
复制代码
配置文件剖析


  • name:工具的名称,用于描述工具的功能。
  • key:工具的唯一标识符。
  • command:运行工具的下令。
  • args:下令的参数列表,用于指定运行情况和脚本路径。
  • disabled:是否禁用该工具。
  • autoApprove:自动批准的工具列表。
这段配置相当于运行以下下令:
  1. uv --directory E:\Script\PyStore\dirsearch-mcp-server\ run --with mcp mcp run main.py
复制代码
运行

为了更方便地使用MCP工具,我们可以在VSCode中安装cline插件,并举行以下配置:

  • 安装插件
    在VSCode的扩展市场中搜索并安装cline插件。
  • 选择MCP服务器
    打开VSCode,选择MCP server作为目的服务器。
  • 配置工具
    点击Config按钮,按照提示完成配置。
  • 运行工具
    配置完成后,工具将自动运行,如下图所示:


  • 检察结果
    工具运行后,你可以在VSCode的输出窗口中检察结果,如下图所示:


最终的查询结果如下:


总结

通过本文的介绍,我们成功搭建了一个基于MCP技术及ai技术的智能化备案信息查询工具,并实现了自动调用和结果展示。
MCP技术为AI提供了一种与外部工具交互的能力,在渗出测试中,如果将完整的渗出测试工具链通过MCP技术装备给ai调用,那么智能化的渗出测试工具将极大的进步工作的服从,就可以实现渗出测试从自动化到完全智能化的转变。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表