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

115 阅读5分钟

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

在人工智能快速发展的今天,如何让AI更高效地与现实世界交互,成为许多开发者和研究者关注的焦点。MCP(Model Context Protocol)技术作为一种创新的工具集成方案,为AI提供了一种“双手”的能力,使其能够通过调用外部工具完成复杂任务。本文将展示在实际场景中的应用。 ## 环境搭建 在开始构建MCP工具之前,我们需要先搭建一个稳定的工作环境。以下是详细的环境配置步骤: ### 初始化项目 首先,我们需要初始化一个项目目录,这将作为我们后续开发的基础。运行以下命令: ``` uv init dirsearch-mcp-server

 这一步会创建一个名为 `dirsearch-mcp-server` 的目录,并初始化项目结构。 注: uv 是一个挺全面的python依赖管理工具,但本人不用python做主力很久,略有生疏,按照大家的推荐也使用的uv。 这个项目名称原本是想用来连接dirsearch使用的,奈何环境问题一直搞不定,遂怒,决定使用 `go run main.go` 运行自编写的go程序,环境报错,亦怒, 直接 `go build` 编译执行。 ### 创建Python虚拟环境
 为了确保开发环境的隔离性和稳定性,我们使用Python虚拟环境。进入项目目录后,运行以下命令: ```
cd dirsearch-mcp-server
uv venv

这将创建一个名为 .venv 的虚拟环境,所有依赖包都将安装在这个环境中,避免与其他项目产生冲突。 ### 激活虚拟环境 激活虚拟环境是使用MCP工具的前提。根据你的操作系统,运行以下命令: ``` .venv\Scripts\activate

 激活后,你的命令行提示符会显示 `(venv)` ,表示虚拟环境已成功激活。 ### 安装依赖
 接下来,我们需要安装MCP的依赖包。运行以下命令: ```
uv add mcp[cli]

这将安装MCP的核心库及其命令行接口(CLI),为后续开发提供支持。 ## 创建MCP服务器:赋予AI执行能力 在环境配置完成后,我们可以开始创建一个MCP服务器。以下是具体的实现代码: ``` import subprocess
import time
from pathlib import Path

from mcp.server.fastmcp import FastMCP

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

mcp = FastMCP("beian-query-server", log_level="ERROR")

@mcp.tool()
async def run_beian_query(domain: str, timeout: int = 300) -> dict:
"""
执行备案信息查询工具

参数:  
    domain (str): 要查询的域名 (如 baidu.com)  
    timeout (int): 最大执行时间(秒)  

返回:  
    dict: 包含执行结果的字典  
"""  
start_time = time.time()  
result = {  
    "status": "pending",  
    "command": "",  
    "returncode": None,  
    "stdout": "",  
    "stderr": "",  
    "duration": 0.0  
}  
try:  
    # 配置固定参数  
    target_dir = r"E:\Script\GoStore\RedTeam\tools\ToolsForBeian"  
    exe_path = str(Path(target_dir) / "beian.exe")    
    go_cmd = [exe_path, "info", "-i", domain]         

    # 验证环境  
    if not Path(exe_path).exists():  # 关键修改点3  
        raise FileNotFoundError(f"beian.exe not found in {target_dir}")  

    # 记录完整命令  
    result["command"] = " ".join(go_cmd)  

    # 执行命令  
    process = subprocess.run(  
        go_cmd,  
        cwd=target_dir,  
        stdout=subprocess.PIPE,  
        stderr=subprocess.PIPE,  
        timeout=timeout,  
        encoding='utf-8',  
        errors='replace'  
    )  

    # 记录结果  
    result.update({  
        "status": "success",  
        "returncode": process.returncode,  
        "stdout": process.stdout.strip(),  
        "stderr": process.stderr.strip(),  
        "duration": round(time.time() - start_time, 2)  
    })  

except subprocess.TimeoutExpired as e:  
    result.update({  
        "status": "timeout",  
        "stderr": f"执行超时 ({timeout}s)",  
        "duration": timeout  
    })  
except Exception as e:  
    result.update({  
        "status": "error",  
        "stderr": str(e),  
        "duration": round(time.time() - start_time, 2)  
    })  

return result  

if name == "main":
mcp.run(transport="stdio")

 上述 exePath 中的beian.exe 就是编译后的程序名称 ### 代码解析
 1. 初始化MCP服务器 使用 `FastMCP` 类创建一个服务器实例,指定服务器名称为 `beian-query-server` ,并将日志级别设置为 `ERROR` ,以减少不必要的输出
2. 定义工具函数 通过 `@mcp.tool()` 装饰器,我们将 `run_beian_query` 函数注册为一个MCP工具这个函数接收两个参数: `domain` (域名)和 `timeout` (超时时间),并返回一个包含执行结果的字典
3. 工具逻辑 * 配置工具路径:指定 `beian.exe` 的路径,并验证其是否存在
* 执行命令:通过 `subprocess.run` 执行备案查询命令,并捕获输出和错误信息
* 结果处理:根据执行结果更新状态返回码输出内容和执行时间

 ## 配置MCP Client
 创建好 server 后,就需要对client进行配置了,由于 vscode 中 cline  插件很好的支持了 mcp server 功能,可以节省我们创建 mcp client 的步骤 ,但是使用时需要进行相关配置,以下是配置文件的内容: ```
{
  "mcpServers": {
    "beian-query-server": {
      "name": "调用golang工具的备案查询工具",
      "key": "dirsearch-mcp-server",
      "command": "uv",
      "args": [
        "--directory",
        "E:\\Script\\PyStore\\dirsearch-mcp-server\\",
        "run",
        "--with",
        "mcp",
        "mcp",
        "run",
        "main.py"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}

配置文件解析

  • name :工具的名称,用于描述工具的功能。
  • key :工具的唯一标识符。
  • command :运行工具的命令。
  • args :命令的参数列表,用于指定运行环境和脚本路径。
  • disabled :是否禁用该工具。
  • autoApprove :自动批准的工具列表。 这段配置相当于运行以下命令: ``` uv --directory E:\Script\PyStore\dirsearch-mcp-server\ run --with mcp mcp run main.py
 ## 运行
 为了更方便地使用MCP工具,我们可以在VSCode中安装 `cline` 插件,并进行以下配置: 1. 安装插件 在VSCode的扩展市场中搜索并安装 `cline` 插件。
2. 选择MCP服务器 打开VSCode,选择 `MCP server` 作为目标服务器。
3. 配置工具 点击 `Config` 按钮,按照提示完成配置。
4. 运行工具 配置完成后,工具将自动运行,如下图所示:
 1. 查看结果 工具运行后,你可以在VSCode的输出窗口中查看结果,如下图所示:
 最终的查询结果如下: ## 总结
 通过本文的介绍,我们成功搭建了一个基于MCP技术及ai技术的智能化备案信息查询工具,并实现了自动调用和结果展示。 MCP技术为AI提供了一种与外部工具交互的能力,在渗透测试中,如果将完整的渗透测试工具链通过MCP技术装备给ai调用,那么智能化的渗透测试工具将极大的提高工作的效率,就可以实现渗透测试从自动化到完全智能化的转变。

> 原文链接: https://www.cnblogs.com/D1TA/p/18803169