返回市场
渗透测试-mcp

渗透测试-mcp

作者:DMontgomery4099 星标更新:2025-06-28

项目介绍

Pentest MCP: 专业渗透测试工具包

smithery 徽章 在MseeP上验证

用于渗透测试的多传输MCP服务器 - 支持本地通过标准输入输出(STDIO),网络通过HTTP流式传输,或与旧版SSE客户端兼容。可以在Docker中运行,远程部署,或本地使用 - 由您选择。

🚀 关键特性

多传输架构

  • STDIO传输:传统子进程通信,适用于本地MCP客户端
  • HTTP流式传输:现代网络协议,支持全双工通信
  • SSE传输:与旧版MCP客户端兼容
  • OAuth 2.1支持:网络传输的安全认证
  • 一个服务器,多种安全选项:相同的工具,相同的界面,由您选择传输方式和认证方式

专业渗透测试工具

  • 网络侦察 使用Nmap - 全面端口扫描,服务检测,操作系统指纹识别
  • Web目录枚举 使用Gobuster - 查找隐藏路径和文件
  • Web漏洞扫描 使用Nikto - 综合安全检查
  • 密码破解 使用John the Ripper和Hashcat - 包括自定义字典生成
  • GPU加速破解 使用Hashcat - 支持WPA/WPA2,NTLM,bcrypt以及超过300种哈希类型

智能工作流程集成

  • 自然语言接口用于复杂命令
  • 工具链用于全面评估
  • 根据上下文建议下一步操作
  • 自动生成客户端报告
  • 支持语音控制(配合语音转文字)

🎯 快速开始

通过npm安装

npm install -g pentest-mcp

通过Smithery安装

npx -y @smithery/cli install @DMontgomery40/pentest-mcp --client claude

使用您偏好的传输方式运行

# 本地子进程模式(默认)
pentest-mcp

# 网络模式,使用HTTP流式传输
MCP_TRANSPORT=http pentest-mcp

# 旧版SSE模式
MCP_TRANSPORT=sse pentest-mcp

📡 传输选项

STDIO(默认) - 本地子进程

适合Claude桌面和本地开发:

{
  "servers": [{
    "name": "pentest-mcp",
    "command": "pentest-mcp"
  }]
}

HTTP流式传输 - 网络模式

部署到任何地方,从任何地方访问:

# 启动服务器
MCP_TRANSPORT=http pentest-mcp

# 或使用Docker
docker run -p 8000:8000 -e MCP_TRANSPORT=http --privileged pentest-mcp:latest

配置您的客户端:

{
  "servers": [{
    "name": "pentest-mcp",
    "url": "http://localhost:8000/mcp"
  }]
}

SSE - 向后兼容

为了与旧版客户端兼容:

MCP_TRANSPORT=sse MCP_SERVER_PORT=8001 pentest-mcp

🐳 Docker部署

简单Docker运行

# STDIO模式(适用于本地MCP客户端)
docker run -it --rm --privileged pentest-mcp:latest

# HTTP模式(适用于网络访问)
docker run -p  8000:8000 -e MCP_TRANSPORT=http --privileged pentest-mcp:latest

Docker Compose带配置文件

# 克隆并构建
git clone https://github.com/dmontgomery40/pentest-mcp.git
cd pentest-mcp
docker-compose build

# 运行您偏好的传输方式
docker-compose --profile stdio up
docker-compose --profile http up
docker-compose --profile sse up

环境变量

  • MCP_TRANSPORT: 选择传输方式(stdio, http, sse)
  • MCP_SERVER_HOST: 绑定地址(默认:0.0.0.0)
  • MCP_SERVER_PORT: 服务器端口(默认:8000)

💬 使用示例

网络发现

设置模式为专业。
对192.168.1.0/24进行SYN扫描和服务检测。

Web应用评估

扫描10.0.1.0/24中的web服务器。
对于每个找到的web服务器,使用common.txt枚举目录。
对所有发现的web服务器运行nikto。
创建一个客户端报告总结发现。

自定义密码攻击

为成立于1995年的公司“Acme Corp”由John Smith生成字典。
使用生成的字典破解以下哈希:
admin:$1$xyz$...
user:$1$abc$...

🔧 系统需求

  • 所需工具:nmap, john, gobuster, nikto(必须在PATH中)
  • Node.js:v16+以支持ESM
  • 权限:根/管理员权限用于SYN扫描和操作系统检测
  • 平台:适用于任何操作系统,针对Kali Linux进行了优化

📦 安装选项

全局安装

npm install -g pentest-mcp

本地开发

git clone https://github.com/dmontgomery40/pentest-mcp.git
cd pentest-mcp
npm install
npm run build

平台特定工具安装

# macOS
brew install nmap john-jumbo gobuster nikto

# Debian/Ubuntu
sudo apt update
sudo apt install nmap john gobuster nikto

# Kali Linux(预安装)
# 所有工具都已预安装

🔐 OAuth认证(新)

保护您的网络部署

Pentest MCP现在支持HTTP/SSE传输的OAuth 2.1认证,实现:

  • 企业SSO集成:连接到Auth0,Okta,Azure AD或其他OAuth提供商
  • 基于令牌的安全性:不再需要共享密钥或API密钥
  • 细粒度访问控制:为不同用户定义细粒度权限
  • 动态客户端注册:与兼容提供者自动设置客户端

快速OAuth设置

  1. 启用OAuth 在您的.env中:
MCP_OAUTH_ENABLED=true
MCP_OAUTH_PROVIDER_URL=https://your-domain.auth0.com/oauth2
MCP_OAUTH_CLIENT_ID=your_client_id
MCP_OAUTH_CLIENT_SECRET=your_client_secret
MCP_OAUTH_SCOPES=read,write,scan
  1. 使用HTTP传输启动
MCP_TRANSPORT=http npm start
  1. 使用OAuth令牌连接
const client = new McpClient();
await client.connect('http://localhost:8000/mcp', {
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
  }
});

支持的OAuth提供商

  • Auth0:完全支持自定义范围
  • Google OAuth:企业工作区集成
  • GitHub:基于团队的访问控制
  • Azure AD:Microsoft企业SSO
  • 任何OAuth 2.1提供商:PKCE合规提供者

OAuth端点

当启用OAuth时,以下端点可用:

  • /.well-known/oauth-authorization-server - 授权服务器元数据
  • /.well-known/oauth-protected-resource - 受保护资源元数据
  • /oauth/authorize - 授权端点(如果作为授权服务器)
  • /oauth/token - 令牌端点(如果作为授权服务器)

🛡️ 安全与法律

⚠️ 仅限授权使用:此工具包仅供在有效工作范围内操作的专业渗透测试人员使用。仅在具有明确书面授权的系统和网络上使用。

🐳 Docker安全提示:某些扫描(SYN,OS检测)需要--privileged标志。仅在可信环境或虚拟机中使用。

🔍 故障排除

工具未找到

确保所有必需的工具都在您的PATH中:

which nmap john gobuster nikto

权限被拒绝

对于SYN扫描和操作系统检测:

# 本地使用sudo运行
sudo pentest-mcp

# 或使用带有--privileged的Docker
docker run --privileged pentest-mcp:latest

构建问题

rm -rf node_modules dist
npm install
npm run build

传输特定问题

  • HTTP无法访问:检查防火墙规则和端口绑定
  • SSE连接断开:确保启用了keep-alive
  • STDIO挂起:验证MCP客户端支持stdio传输

📚 文档

🤝 贡献

欢迎在GitHub仓库提交拉取请求。由专业人士为专业人士打造。

📄 许可证

GPL-3.0或更高版本 - 详情见LICENSE文件。