インストール
ツールリスト
コンテンツ詳細
代替品
インストール
{
"mcpServers": {
"sqlmap": {
"command": "python",
"args": ["/path/to/sqlmap-mcp/server.py"],
"env": {}
}
}
}🚀 SQLMap MCP Server (FastMCP)
FastMCPを使用して構築されたModel Context Protocol (MCP)サーバーで、SQLMap CLIツールを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": {}
}
}
}
利用可能なツール
1. sqlmap_help
SQLMapのヘルプ情報を表示します。
- パラメーター:
advanced(boolean): 高度なヘルプを表示します(-hhを使用)
2. sqlmap_scan_url
ターゲットURLのSQLインジェクション脆弱性をスキャンします。
- 必須パラメーター:
url(string): スキャンするターゲットURL
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値level(integer, 1-5): 実行するテストのレベルrisk(integer, 1-3): 実行するテストのリスクtechnique(string): 使用するSQLインジェクション手法
3. sqlmap_enumerate_databases
ターゲットのデータベースを列挙します。
- 必須パラメーター:
url(string): ターゲットURL
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値
4. sqlmap_enumerate_tables
特定のデータベース内のテーブルを列挙します。
- 必須パラメーター:
url(string): ターゲットURLdatabase(string): 列挙するデータベース名
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値
5. sqlmap_enumerate_columns
特定のテーブル内の列を列挙します。
- 必須パラメーター:
url(string): ターゲットURLdatabase(string): データベース名table(string): 列挙するテーブル名
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値
6. sqlmap_dump_table
特定のテーブルからデータをダンプします。
- 必須パラメーター:
url(string): ターゲットURLdatabase(string): データベース名table(string): ダンプするテーブル名
- オプションパラメーター:
columns(string): ダンプする特定の列(カンマ区切り)where(string): 結果を制限するWHERE句limit(integer): ダンプする行数を制限data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値
7. sqlmap_get_banner
データベースバナー情報を取得します。
- 必須パラメーター:
url(string): ターゲットURL
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値
8. sqlmap_get_current_user
現在のデータベースユーザーを取得します。
- 必須パラメーター:
url(string): ターゲットURL
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値
9. sqlmap_get_current_db
現在のデータベース名を取得します。
- 必須パラメーター:
url(string): ターゲットURL
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値
10. sqlmap_read_file
データベースサーバーのファイルシステムからファイルを読み取ります。
- 必須パラメーター:
url(string): ターゲットURLfile_path(string): 読み取るファイルのパス
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値
11. sqlmap_execute_command
データベースサーバーでオペレーティングシステムコマンドを実行します。
- 必須パラメーター:
url(string): ターゲットURLcommand(string): 実行するOSコマンド
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値
12. sqlmap_advanced_scan
カスタムオプションで高度なSQLMapスキャンを実行します。
- 必須パラメーター:
url(string): ターゲットURL
- オプションパラメーター:
data(string): POSTデータ文字列cookie(string): HTTP Cookieヘッダー値user_agent(string): カスタムユーザーエージェントヘッダーproxy(string): 使用するプロキシtor(boolean): Tor匿名ネットワークを使用するrandom_agent(boolean): ランダムなユーザーエージェントを使用するlevel(integer, 1-5): テストのレベルrisk(integer, 1-3): テストのリスクtechnique(string): SQLインジェクション手法dbms(string): バックエンドDBMSを強制するtimeout(integer): リクエストのタイムアウト(秒)threads(integer, 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のドキュメントを確認してください。
- プロジェクトのリポジトリで問題を開いてください。
免責事項: このツールは教育および承認されたセキュリティテスト目的のみに使用されることを意図しています。ユーザーは、このツールをいかなるシステムで使用する前に適切な承認を取得する責任があります。
代替品








