使用说明
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许可证-请参阅 许可证 了解详情。
贡献
欢迎投稿!请随时提交问题和拉取请求。