sqlmap MCP服务器
一种模型上下文协议(MCP)服务器,提供对以下内容的编程访问 sqlmap,强大的自动SQL注入和数据库接管工具。
概述
该MCP服务器封装了sqlmap的REST API,使人工智能助手和自动化工具能够通过标准化接口执行SQL注入测试。它既提供了对sqlmap任务的低级控制,也为常见操作提供了方便的高级工具。
重要提示: 此工具仅用于授权的安全测试。在测试任何系统之前,始终获得适当的授权。
特性
- 任务管理 -创建、配置和删除sqlmap扫描任务
- 扫描控制 -启动、停止和监视SQL注入扫描
- 数据库枚举 -发现数据库、表、列和转储数据
- 操作系统交互 -通过SQL注入执行操作系统命令(条件允许时)
- 便利工具 -自动处理完整扫描工作流程的高级工具
- 灵活的配置 -支持所有sqlmap选项,包括级别、风险、技术等
先决条件
- Node.js 18+
- 运行REST API服务器的sqlmap(
sqlmapapi.py -s)
启动sqlmap API服务器
# From your sqlmap installation directory
python sqlmapapi.py -s
# Or with custom host/port
python sqlmapapi.py -s -H 0.0.0.0 -p 8775
# With basic authentication
python sqlmapapi.py -s --username admin --password secret安装
# Clone the repository
git clone https://github.com/schwarztim/sec-sqlmap-mcp.git
cd sec-sqlmap-mcp
# Install dependencies
npm install
# Build
npm run build配置
通过环境变量进行配置:
| 变量 | 默认值 | 描述 |
|---|---|---|
SQLMAP_API_HOST | 127.0.0.1 | sqlmap API服务器主机 |
SQLMAP_API_PORT | 8775 | sqlmap API服务器端口 |
SQLMAP_API_USERNAME | (无) | 基本身份验证用户名(可选) |
SQLMAP_API_PASSWORD | (无) | 基本身份验证密码(可选) |
使用Claude Desktop
添加到您的Claude Desktop配置(~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"sqlmap": {
"command": "node",
"args": ["/path/to/sec-sqlmap-mcp/dist/index.js"],
"env": {
"SQLMAP_API_HOST": "127.0.0.1",
"SQLMAP_API_PORT": "8775"
}
}
}
}可用工具
核心任务管理
| 工具 | 说明 |
|---|---|
sqlmap_new_task | 创建新的扫描任务 |
sqlmap_delete_task | 删除现有任务 |
sqlmap_set_options | 配置任务选项 |
sqlmap_get_options | 检索当前选项 |
sqlmap_list_options | 列出所有可用选项 |
扫描控制
| 工具 | 说明 |
|---|---|
sqlmap_start_scan | 启动已配置的扫描 |
sqlmap_scan_status | 检查扫描状态 |
sqlmap_scan_data | 获取扫描结果 |
sqlmap_scan_log | 获取扫描日志消息 |
sqlmap_stop_scan | 优雅地停止扫描 |
sqlmap_kill_scan | 强制终止扫描 |
便利工具(推荐)
这些工具自动处理完整的工作流程:
| 工具 | 说明 |
|---|---|
sqlmap_enumerate_dbs | 发现所有数据库 |
sqlmap_enumerate_tables | 列出数据库中的表 |
sqlmap_enumerate_columns | 列出表中的列 |
sqlmap_dump_table | 从表中提取数据 |
sqlmap_os_shell | 尝试获取操作系统shell访问权限 |
sqlmap_os_cmd | 执行操作系统命令 |
效用
| 工具 | 说明 |
|---|---|
sqlmap_check_connection | 验证API服务器连接 |
sqlmap_version | 获取sqlmap版本信息 |
示例用法
枚举数据库
// Using the convenience tool
sqlmap_enumerate_dbs({
url: "http://target.com/page?id=1",
level: 3,
risk: 2
})手动工作流程
// 1. Create task
const { taskid } = await sqlmap_new_task()
// 2. Configure options
await sqlmap_set_options({
taskId: taskid,
options: {
url: "http://target.com/page?id=1",
level: 3,
risk: 2,
dbs: true,
batch: true
}
})
// 3. Start scan
await sqlmap_start_scan({ taskId: taskid })
// 4. Monitor status
const status = await sqlmap_scan_status({ taskId: taskid })
// 5. Get results when complete
const results = await sqlmap_scan_data({ taskId: taskid })
// 6. Cleanup
await sqlmap_delete_task({ taskId: taskid })转储特定数据
// Dump usernames and passwords from users table
sqlmap_dump_table({
url: "http://target.com/page?id=1",
database: "webapp",
table: "users",
columns: "username,password",
level: 2,
risk: 1
})常用选项
| 选项 | 描述 |
|---|---|
url | 带有可注射参数的目标URL |
data | POST数据(例如。, username=admin&password=test) |
cookie | HTTP Cookie标头值 |
level | 测试级别(1-5,更高=更彻底) |
risk | 测试风险(1-3,更高=更具攻击性) |
technique | 注入技术:B(oolean)、E(error)、U(nion)、S(tacked)、T(ime)、Q(inline) |
dbms | 强制特定DBMS(MySQL、PostgreSQL、MSSQL、Oracle等) |
threads | 并发线程数 |
安全考虑
- 需要授权 -只有您有明确权限测试的测试系统
- 网络隔离 -尽可能在隔离环境中运行
- 审计日志 -记录所有扫描活动
- 凭证保护 -使用环境变量进行敏感配置
许可证
MIT许可证-请参阅 许可证 了解详情。
贡献
欢迎投稿!请随时提交问题和拉取请求。
