本指南将引导您完成设置一个全面的MCP(模型上下文协议)服务器用于渗透测试工具的过程。
# 更新包列表
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
# 如果尚未安装,请安装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
# 从官方仓库安装
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
mkdir mcp-pentest-server
cd mcp-pentest-server
npm init -y
# 安装MCP SDK
npm install @modelcontextprotocol/sdk
# 安装开发依赖
npm install -D nodemon
保存提供的JavaScript代码作为server.js和package.json配置。
chmod +x server.js
# 测试服务器是否正确启动
node server.js
配置文件位于:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.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桌面以加载新的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"
}
为了更好的性能,您可以调整:
# 检查工具是否在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集成:
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;
}
}
对于问题、改进或疑问:
本项目根据MIT许可证发布 - 详情参见LICENSE文件。 </中文翻译>