返回市场
渗透测试-MCP服务器

渗透测试-MCP服务器

作者:VyomJain69042 星标更新:2025-07-11

项目介绍

MCP 渗透测试服务器设置指南

本指南将引导您完成设置一个全面的MCP(模型上下文协议)服务器用于渗透测试工具的过程。

预备条件

系统需求

  • Linux/macOS(推荐)或带有WSL2的Windows
  • Node.js 18+ 和 npm
  • Python 3.8+(对于某些工具)
  • Git

安全工具安装

在Ubuntu/Debian上:

# 更新包列表
sudo apt update

# 安装基本工具
sudo apt install -y nmap gobuster nikto hydra john hashcat ffuf

# 安装dirsearch
sudo apt install -y python3-pip
pip3 install dirsearch

# 安装nuclei
sudo apt install -y golang-go
go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
sudo ln -s ~/go/bin/nuclei /usr/local/bin/nuclei

在macOS上:

# 如果尚未安装,请安装Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装工具
brew install nmap gobuster nikto hydra john hashcat ffuf
brew install nuclei

# 安装dirsearch
pip3 install dirsearch

在Arch Linux上:

# 从官方仓库安装
sudo pacman -S nmap gobuster nikto hydra john hashcat

# 从AUR安装
yay -S ffuf nuclei dirsearch

字典设置

# 创建字典目录
sudo mkdir -p /usr/share/wordlists

# 下载常用字典
sudo git clone https://github.com/danielmiessler/SecLists.git /usr/share/wordlists/seclists

# 下载dirb字典
sudo apt install -y dirb  # 这将在/usr/share/wordlists/dirb/中安装字典

# 或手动下载
sudo wget -O /usr/share/wordlists/common.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/common.txt

MCP服务器设置

第一步:创建项目目录

mkdir mcp-pentest-server
cd mcp-pentest-server

第二步:初始化Node.js项目

npm init -y

第三步:安装依赖

# 安装MCP SDK
npm install @modelcontextprotocol/sdk

# 安装开发依赖
npm install -D nodemon

第四步:创建服务器文件

保存提供的JavaScript代码作为server.jspackage.json配置。

第五步:使服务器可执行

chmod +x server.js

第六步:测试服务器

# 测试服务器是否正确启动
node server.js

Claude桌面集成

第一步:定位Claude桌面配置

配置文件位于:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/claude_desktop/claude_desktop_config.json

第二步:创建/更新配置

创建或更新配置文件,内容如下:

{
  "mcpServers": {
    "pentest-server": {
      "command": "node",
      "args": ["/full/path/to/your/mcp-pentest-server/server.js"],
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

重要:将/full/path/to/your/mcp-pentest-server/server.js替换为您服务器文件的实际绝对路径。

第三步:重启Claude桌面

关闭并重新打开Claude桌面以加载新的MCP服务器配置。

使用示例

配置完成后,您可以在Claude桌面中使用以下命令:

基础端口扫描

请对192.168.1.1进行快速类型的nmap扫描

网站目录枚举

对http://example.com进行gobuster扫描,扩展名为php,html,txt

漏洞扫描

对example.com进行nuclei扫描,重点关注CVE模板

综合侦察

对example.com进行全面扫描,包括网站和漏洞扫描

密码攻击

使用hydra对192.168.1.100进行SSH暴力破解,用户名admin,密码列表为/usr/share/wordlists/rockyou.txt

配置选项

自定义字典路径

您可以在工具参数中指定自定义字典路径:

{
  "target": "http://example.com",
  "wordlist": "/custom/path/to/wordlist.txt"
}

扫描优化

为了更好的性能,您可以调整:

  • 线程数量(通常为10-50,取决于目标)
  • 服务器代码中的超时值
  • 扫描强度级别

安全注意事项

网络分段

  • 只在您拥有或明确许可测试的网络上运行扫描
  • 尽可能使用隔离的测试环境

速率限制

  • 实现请求之间的延迟,避免淹没目标
  • 考虑使用代理链以保持匿名性

日志记录

  • 启用详细的日志记录以符合合规性和调试需求
  • 安全存储扫描结果

故障排除

常见问题

工具未找到

# 检查工具是否在PATH中
which nmap
which gobuster

# 如有必要,添加到PATH
export PATH=$PATH:/usr/local/bin

权限错误

# 某些工具需要root权限
sudo chmod +x server.js
sudo node server.js

端口访问问题

# 对于特权端口,使用sudo运行
sudo node server.js

调试模式

通过设置环境变量启用调试日志:

DEBUG=true node server.js

日志文件

检查系统日志以获取详细的错误信息:

# 在Linux上
journalctl -u mcp-pentest-server

# 手动日志文件
tail -f /var/log/mcp-pentest.log

高级配置

自定义工具集成

要添加新工具,扩展服务器类:

async runCustomTool(args) {
  const { target, options } = args;
  const command = `custom-tool ${target} ${options}`;
  
  try {
    const { stdout } = await execAsync(command);
    return {
      content: [{
        type: 'text',
        text: JSON.stringify({
          tool: 'custom-tool',
          target,
          results: this.parseCustomOutput(stdout)
        }, null, 2)
      }]
    };
  } catch (error) {
    throw new Error(`自定义工具失败: ${error.message}`);
  }
}

数据库集成

为了存储结果,考虑与数据库集成:

const sqlite3 = require('sqlite3');
const db = new sqlite3.Database('pentest_results.db');

// 存储扫描结果
async storeScanResult(result) {
  const query = `
    INSERT INTO scans (target, tool, timestamp, results)
    VALUES (?, ?, ?, ?)
  `;
  
  return new Promise((resolve, reject) => {
    db.run(query, [
      result.target,
      result.tool,
      result.timestamp,
      JSON.stringify(result.parsed_results)
    ], function(err) {
      if (err) reject(err);
      else resolve(this.lastID);
    });
  });
}

API集成

对外部API集成:

const axios = require('axios');

async queryThreatIntel(target) {
  try {
    const response = await axios.get(`https://api.threatintel.com/lookup/${target}`, {
      headers: { 'Authorization': `Bearer ${process.env.THREAT_INTEL_API_KEY}` }
    });
    return response.data;
  } catch (error) {
    console.error('威胁情报查询失败:', error);
    return null;
  }
}

安全最佳实践

  1. 最小权限原则:以最低权限运行服务器
  2. 输入验证:对所有用户输入进行消毒,防止命令注入
  3. 速率限制:实现请求节流以防止滥用
  4. 审计日志:记录所有扫描活动以符合合规性
  5. 网络隔离:使用专用网络进行测试
  6. 数据加密:加密敏感的扫描结果
  7. 定期更新:保持所有工具和依赖项的更新

法律考虑

  • 只扫描您拥有或有明确书面许可测试的系统
  • 遵守关于安全测试的地方法律和法规
  • 保持授权测试活动的适当文档
  • 考虑漏洞赏金计划规则和范围限制
  • 实施适当的处理和隐私保护措施

支持和贡献

对于问题、改进或疑问:

  1. 查看故障排除部分
  2. 查阅工具文档
  3. 提交包含详细错误日志的问题
  4. 考虑将改进贡献回项目

许可证

本项目根据MIT许可证发布 - 详情参见LICENSE文件。 </中文翻译>