安裝
工具列表
內容詳情
替代品
安裝
{
"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 文檔
- 在項目倉庫中打開一個問題
免責聲明:此工具僅用於教育和授權的安全測試目的。用戶有責任確保在任何系統上使用此工具之前獲得適當的授權。
替代品








