Sqlmap Mcp

Sqlmap Mcp

🚀 SQLMap MCP Server (FastMCP)

SQLMap MCP Server (FastMCP) 是一个基于 FastMCP 构建的模型上下文协议(MCP)服务器,它将 SQLMap 命令行工具以 MCP 函数的形式暴露出来,用于自动化 SQL 注入测试和数据库侦察。

🚀 快速开始

此 MCP 服务器通过标准化接口提供对 SQLMap 强大的 SQL 注入测试功能的编程访问。它基于 FastMCP 构建,简单易用,允许 AI 助手和其他 MCP 客户端执行自动化安全测试、数据库枚举和漏洞评估。

✨ 主要特性

核心 SQLMap 功能暴露

  1. 基本扫描

    • 基于 URL 的 SQL 注入检测
    • 可配置的测试级别和风险评估
    • 支持多种注入技术
  2. 数据库枚举

    • 数据库发现和列表
    • 数据库内的表枚举
    • 表内的列枚举
    • 模式分析
  3. 数据检索

    • 带有过滤选项的表数据转储
    • 选择性列提取
    • 支持 WHERE 子句进行目标查询
  4. 系统信息

    • 数据库标识信息检索
    • 当前用户识别
    • 当前数据库检测
    • 主机名枚举
  5. 高级访问

    • 文件系统访问(从数据库服务器读取文件)
    • 操作系统命令执行
    • 自定义有效负载注入
  6. 高级选项

    • 代理支持
    • Tor 网络集成
    • 自定义用户代理配置
    • 多线程支持
    • 请求超时配置

📦 安装指南

前提条件

  1. Python 3.13+(如 pyproject.toml 中指定)
  2. FastMCP - 通过依赖自动安装
  3. SQLMap - 通过你喜欢的方法安装:
# 使用 Homebrew (macOS)
brew install sqlmap

# 使用 pip
pip install sqlmap

# 或者从 GitHub 克隆
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

安装步骤

  1. 克隆仓库:
git clone 
cd sqlmap-mcp
  1. 安装依赖:
# 使用 uv (推荐)
uv sync

# 或者使用 pip
pip install -e .
  1. 验证 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(字符串):目标 URL
      • database(字符串):要枚举的数据库名称
    • 可选参数
      • data(字符串):POST 数据字符串
      • cookie(字符串):HTTP Cookie 头部值
  • sqlmap_enumerate_columns:枚举特定表中的列。

    • 必需参数
      • url(字符串):目标 URL
      • database(字符串):数据库名称
      • table(字符串):要枚举的表名称
    • 可选参数
      • data(字符串):POST 数据字符串
      • cookie(字符串):HTTP Cookie 头部值
  • sqlmap_dump_table:从特定表中转储数据。

    • 必需参数
      • url(字符串):目标 URL
      • database(字符串):数据库名称
      • 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(字符串):目标 URL
      • file_path(字符串):要读取的文件路径
    • 可选参数
      • data(字符串):POST 数据字符串
      • cookie(字符串):HTTP Cookie 头部值
  • sqlmap_execute_command:在数据库服务器上执行操作系统命令。

    • 必需参数
      • url(字符串):目标 URL
      • command(字符串):要执行的操作系统命令
    • 可选参数
      • 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
}
}

📚 详细文档

安全注意事项

⚠️ 重要安全警告

  1. 合法合规:仅在你拥有或获得明确测试许可的系统上使用此工具。
  2. 授权许可:在进行任何安全测试之前,确保你有适当的授权。
  3. 环境隔离:在隔离的测试环境中使用,以防止意外访问生产系统。
  4. 数据保护:要知道 SQLMap 可以从数据库中提取敏感数据。
  5. 速率限制:实施适当的速率限制,以避免对目标系统造成过大压力。
  6. 日志记录:监控并记录所有活动,以便进行审计。

最佳实践

  1. 测试环境:始终先在受控、隔离的环境中进行测试。
  2. 文档记录:记录所有测试活动和结果。
  3. 负责任披露:如果发现漏洞,请遵循负责任的披露做法。
  4. 访问控制:仅将此 MCP 服务器的访问权限限制给授权人员。
  5. 监控机制:实施监控以检测未经授权的使用。

开发相关

项目结构

sqlmap-mcp/
├── server.py          # 主 FastMCP 服务器实现
├── pyproject.toml     # 项目配置和依赖
├── README.md          # 本文件
└── .gitignore         # Git 忽略规则

添加新工具

要使用 FastMCP 添加新的 SQLMap 功能:

  1. 添加一个用 @app.tool() 装饰的新函数。
  2. 使用适当的类型提示定义函数参数。
  3. 添加一个文档字符串描述工具的用途。
  4. 实现 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 客户端测试工具)

故障排除

常见问题

  1. 未找到 SQLMap:确保 SQLMap 已安装并可在你的 PATH 中访问。
  2. 权限被拒绝:检查文件权限并确保有适当的访问权限。
  3. 超时错误:对于复杂扫描,增加超时值。
  4. 连接问题:验证网络连接和代理设置。

调试模式

通过修改服务器配置或添加日志记录语句来启用调试日志。

贡献代码

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 如有必要,添加测试
  5. 提交拉取请求

📄 许可证

本项目遵循与 SQLMap 相同的许可证(GPLv2)。详情请参阅 LICENSE 文件。

致谢

支持

对于问题和疑问:

  1. 查看故障排除部分
  2. 查看 SQLMap 文档
  3. 在项目仓库中打开一个问题

免责声明:此工具仅用于教育和授权的安全测试目的。用户有责任确保在任何系统上使用此工具之前获得适当的授权。

  • 0 关注
  • 0 收藏,11 浏览
  • system 提出于 2025-09-30 08:03

相似服务问题