安装
工具列表
内容详情
替代品
安装
{
"mcpServers": {
"sqlmap": {
"command": "python",
"args": ["/path/to/sqlmap-mcp/server.py"],
"env": {}
}
}
}🚀 SQLMap MCP Server (FastMCP)
SQLMap MCP Server (FastMCP) 是一个基于 FastMCP 构建的模型上下文协议(MCP)服务器,它将 SQLMap 命令行工具以 MCP 函数的形式暴露出来,用于自动化 SQL 注入测试和数据库侦察。
🚀 快速开始
此 MCP 服务器通过标准化接口提供对 SQLMap 强大的 SQL 注入测试功能的编程访问。它基于 FastMCP 构建,简单易用,允许 AI 助手和其他 MCP 客户端执行自动化安全测试、数据库枚举和漏洞评估。
✨ 主要特性
核心 SQLMap 功能暴露
-
基本扫描
- 基于 URL 的 SQL 注入检测
- 可配置的测试级别和风险评估
- 支持多种注入技术
-
数据库枚举
- 数据库发现和列表
- 数据库内的表枚举
- 表内的列枚举
- 模式分析
-
数据检索
- 带有过滤选项的表数据转储
- 选择性列提取
- 支持 WHERE 子句进行目标查询
-
系统信息
- 数据库标识信息检索
- 当前用户识别
- 当前数据库检测
- 主机名枚举
-
高级访问
- 文件系统访问(从数据库服务器读取文件)
- 操作系统命令执行
- 自定义有效负载注入
-
高级选项
- 代理支持
- Tor 网络集成
- 自定义用户代理配置
- 多线程支持
- 请求超时配置
📦 安装指南
前提条件
- Python 3.13+(如 pyproject.toml 中指定)
- FastMCP - 通过依赖自动安装
- SQLMap - 通过你喜欢的方法安装:
# 使用 Homebrew (macOS)
brew install sqlmap
# 使用 pip
pip install sqlmap
# 或者从 GitHub 克隆
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
安装步骤
- 克隆仓库:
git clone <repository-url>
cd sqlmap-mcp
- 安装依赖:
# 使用 uv (推荐)
uv sync
# 或者使用 pip
pip install -e .
- 验证 SQLMap 安装:
sqlmap --version
💻 使用示例
基础用法
启动服务器
python server.py
MCP 客户端配置
将此服务器添加到你的 MCP 客户端配置中:
{
"mcpServers": {
"sqlmap": {
"command": "python",
"args": ["/path/to/sqlmap-mcp/server.py"],
"env": {}
}
}
}
可用工具
-
sqlmap_help:显示 SQLMap 帮助信息。- 参数:
advanced(布尔值):显示高级帮助(使用 -hh)
- 参数:
-
sqlmap_scan_url:扫描目标 URL 的 SQL 注入漏洞。- 必需参数:
url(字符串):要扫描的目标 URL
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值level(整数,1 - 5):要执行的测试级别risk(整数,1 - 3):要执行的测试风险technique(字符串):要使用的 SQL 注入技术
- 必需参数:
-
sqlmap_enumerate_databases:枚举目标上的数据库。- 必需参数:
url(字符串):目标 URL
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值
- 必需参数:
-
sqlmap_enumerate_tables:枚举特定数据库中的表。- 必需参数:
url(字符串):目标 URLdatabase(字符串):要枚举的数据库名称
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值
- 必需参数:
-
sqlmap_enumerate_columns:枚举特定表中的列。- 必需参数:
url(字符串):目标 URLdatabase(字符串):数据库名称table(字符串):要枚举的表名称
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值
- 必需参数:
-
sqlmap_dump_table:从特定表中转储数据。- 必需参数:
url(字符串):目标 URLdatabase(字符串):数据库名称table(字符串):要转储的表名称
- 可选参数:
columns(字符串):要转储的特定列(逗号分隔)where(字符串):WHERE 子句以限制结果limit(整数):要转储的行数限制data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值
- 必需参数:
-
sqlmap_get_banner:检索数据库标识信息。- 必需参数:
url(字符串):目标 URL
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值
- 必需参数:
-
sqlmap_get_current_user:检索当前数据库用户。- 必需参数:
url(字符串):目标 URL
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值
- 必需参数:
-
sqlmap_get_current_db:检索当前数据库名称。- 必需参数:
url(字符串):目标 URL
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值
- 必需参数:
-
sqlmap_read_file:从数据库服务器文件系统中读取文件。- 必需参数:
url(字符串):目标 URLfile_path(字符串):要读取的文件路径
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值
- 必需参数:
-
sqlmap_execute_command:在数据库服务器上执行操作系统命令。- 必需参数:
url(字符串):目标 URLcommand(字符串):要执行的操作系统命令
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值
- 必需参数:
-
sqlmap_advanced_scan:使用自定义选项执行高级 SQLMap 扫描。- 必需参数:
url(字符串):目标 URL
- 可选参数:
data(字符串):POST 数据字符串cookie(字符串):HTTP Cookie 头部值user_agent(字符串):自定义用户代理头部proxy(字符串):要使用的代理tor(布尔值):使用 Tor 匿名网络random_agent(布尔值):使用随机用户代理level(整数,1 - 5):测试级别risk(整数,1 - 3):测试风险technique(字符串):SQL 注入技术dbms(字符串):强制后端数据库管理系统timeout(整数):请求超时时间(秒)threads(整数,1 - 10):并发线程数
- 必需参数:
高级用法
基本 URL 扫描
{
"name": "sqlmap_scan_url",
"arguments": {
"url": "http://example.com/vuln.php?id=1",
"level": 2,
"risk": 2
}
}
数据库枚举
{
"name": "sqlmap_enumerate_databases",
"arguments": {
"url": "http://example.com/vuln.php?id=1"
}
}
使用代理的高级扫描
{
"name": "sqlmap_advanced_scan",
"arguments": {
"url": "http://example.com/vuln.php?id=1",
"proxy": "http://127.0.0.1:8080",
"level": 3,
"risk": 2,
"threads": 5,
"random_agent": true
}
}
📚 详细文档
安全注意事项
⚠️ 重要安全警告
- 合法合规:仅在你拥有或获得明确测试许可的系统上使用此工具。
- 授权许可:在进行任何安全测试之前,确保你有适当的授权。
- 环境隔离:在隔离的测试环境中使用,以防止意外访问生产系统。
- 数据保护:要知道 SQLMap 可以从数据库中提取敏感数据。
- 速率限制:实施适当的速率限制,以避免对目标系统造成过大压力。
- 日志记录:监控并记录所有活动,以便进行审计。
最佳实践
- 测试环境:始终先在受控、隔离的环境中进行测试。
- 文档记录:记录所有测试活动和结果。
- 负责任披露:如果发现漏洞,请遵循负责任的披露做法。
- 访问控制:仅将此 MCP 服务器的访问权限限制给授权人员。
- 监控机制:实施监控以检测未经授权的使用。
开发相关
项目结构
sqlmap-mcp/
├── server.py # 主 FastMCP 服务器实现
├── pyproject.toml # 项目配置和依赖
├── README.md # 本文件
└── .gitignore # Git 忽略规则
添加新工具
要使用 FastMCP 添加新的 SQLMap 功能:
- 添加一个用
@app.tool()装饰的新函数。 - 使用适当的类型提示定义函数参数。
- 添加一个文档字符串描述工具的用途。
- 实现 SQLMap 命令执行逻辑。
示例:
@app.tool()
async def my_new_tool(url: str, param: Optional[str] = None) -> str:
"""描述此工具的用途"""
args = ["-u", url]
if param:
args.extend(["--param", param])
result = await sqlmap_executor.execute_sqlmap(args)
return result.output if result.success else f"Error: {result.error}"
测试
# 测试服务器
python server.py
# 使用简单的 MCP 客户端进行测试
# (使用你喜欢的 MCP 客户端测试工具)
故障排除
常见问题
- 未找到 SQLMap:确保 SQLMap 已安装并可在你的 PATH 中访问。
- 权限被拒绝:检查文件权限并确保有适当的访问权限。
- 超时错误:对于复杂扫描,增加超时值。
- 连接问题:验证网络连接和代理设置。
调试模式
通过修改服务器配置或添加日志记录语句来启用调试日志。
贡献代码
- 分叉仓库
- 创建功能分支
- 进行更改
- 如有必要,添加测试
- 提交拉取请求
📄 许可证
本项目遵循与 SQLMap 相同的许可证(GPLv2)。详情请参阅 LICENSE 文件。
致谢
- SQLMap Project - 底层 SQL 注入测试工具
- FastMCP - 简化的 MCP 框架
- Model Context Protocol - MCP 规范和实现
支持
对于问题和疑问:
- 查看故障排除部分
- 查看 SQLMap 文档
- 在项目仓库中打开一个问题
免责声明:此工具仅用于教育和授权的安全测试目的。用户有责任确保在任何系统上使用此工具之前获得适当的授权。
替代品








