
コラボレーション対応のWebアプリペンテストスイート
セキュリティテスター向けのコラボレーティブMITMプロキシ。
HTTPトラフィックのキャプチャ、AIによるリクエストの注釈付け、ハントセッションの実行、トラフィックのリプレイ、ファインディングの追跡を、ひとつのインターフェースで実現します。
クイックスタート · 機能 · スクリーンショット · 設定 · セキュリティ · コントリビューション
git clone https://github.com/synlace/ferret.git
cd ferret
cp .env.example .env # optional
just up
または、Docker Composeを直接使用します:
docker compose up --build -d
| サービス | URL |
|---|---|
| UI | http://localhost:3000 |
| API | http://localhost:8000 |
| プロキシ | 127.0.0.1:1337 |
開く:
http://localhost:3000
初回起動時のセットアップウィザードで、パスワードの設定とAIプロバイダーの選択が求められます。
justFerretは、セキュリティテスター向けに構築されたAI支援型HTTPインターセプションプロキシです。
ブラウザ、CLIツール、またはテストワークフローを次のアドレスに向けます:
127.0.0.1:1337
Ferretはリクエストとレスポンスをキャプチャし、ローカルに保存して、AIでトラフィックに注釈を付け、リプレイ、変更、テストを行い、興味深い挙動をファインディングに変換するツールを提供します。
これは、パッシブプロキシ以上のものを求めるワークフローのために設計されています。作業を進めながら思考、テスト、ドキュメント化を支援するものを求める人のためのツールです。
| 機能 | 説明 |
|---|---|
| インターセプトプロキシ | mitmproxyを通じてHTTPおよびHTTPSトラフィックをキャプチャします。 |
| リクエスト履歴 | キャプチャしたトラフィックを閲覧、フィルタリング、検査、リプレイできます。 |
| AI注釈 | リクエストにセキュリティ関連のコンテキストを追加します。 |
| ハント | キャプチャしたトラフィック全体に対してAI支援型のハントセッションを実行します。 |
| ファインディング | 重要度、ホスト、タイプ、エビデンス、ステータスを備えた脆弱性を追跡します。 |
| Snare | 実行中のリクエストまたはレスポンスをインターセプトして変更します。 |
| Gnaw | HTTPリクエストを編集して再送信するためのリピーター形式のタブ。 |
| ワークスペース | セッションごとのscripts/、tests/、notes/ディレクトリ。 |
| プロジェクト | リクエスト履歴、ファインディング、ワークスペース、APIキーを分離します。 |
| 認証 | パスワードログイン、セッションクッキー、任意のAPIキーアクセス、TOTP 2FA。 |
| ローカルファーストストレージ | ローカルのバインドマウントディレクトリに保存されるSQLiteバックエンドのデータ。 |

ハント - リクエスト履歴を検索し、テストを作成・実行し、ファインディングを作成するAI支援型のハントセッション。

履歴 - AI注釈、タイミング、ステータスコード、インラインのリクエスト/レスポンスエディタを備えた完全なプロキシリクエストログ。

ファインディング - 重要度、ホスト、タイプ、AI生成の説明、エビデンススニペットを備えた脆弱性トラッカー。

設定 - CA証明書、パスワード、2FA、AIプロバイダー、APIキー、プロキシステータスを管理します。

セットアップウィザード - パスワード作成とAIプロバイダー設定のための初回セットアップ。
ブラウザ、CLIツール、またはテストクライアントを次のように設定します:
HTTP proxy: 127.0.0.1:1337
HTTPS proxy: 127.0.0.1:1337
HTTPSのインターセプトには、設定ページからmitmproxyのCA証明書をダウンロードしてインストールしてください。
Ferretはすべてのインストールで認証を要求します。
/loginでログインします。HttpOnly SameSite=Strictセッションクッキーを発行します。TOTPベースの2FAは設定ページから有効にできます。
有効にすると、ログイン時に有効な認証アプリのコードが必要になります。
.envに静的APIキーを設定します:
FERRET_API_KEY=your-random-secret
次に、Bearerトークンとして使用します:
curl -H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/requests
セッションクッキーとBearerトークンは独立して検証されます。
.env.exampleを.envにコピーして、Ferretを事前設定します。
ほとんどのAIプロバイダー設定は、セットアップウィザードからも設定できます。
| 変数 | デフォルト | 説明 |
|---|---|---|
FERRET_API_KEY | - | プログラムによるAPIアクセスのための静的Bearerトークン |
OPENROUTER_MODEL | google/gemini-3-flash-preview | デフォルトのOpenRouterモデル |
PROXY_HOST | 0.0.0.0 | プロキシのバインドアドレス |
PROXY_PORT | 1337 | プロキシポート |
UI_PORT | 3000 | UIポート |
FERRET_DATA_DIR | ./data | 永続データディレクトリ |
NEXT_PUBLIC_API_URL | http://localhost:8000 | ブラウザが使用するAPI URL |
NEXT_PUBLIC_SIGINT_URL | - | 任意のSIGINT/ニュースフィードJSON URL |
| プロバイダー | タイプ |
|---|---|
| OpenRouter | クラウド - 多くのモデルに対応する統合API |
| OpenAI | クラウド - GPT-4o、o1など |
| Anthropic | クラウド - Claudeモデル |
| Gemini | クラウド - Google Geminiモデル |
| DeepSeek | クラウド - DeepSeekモデル |
| Mistral | クラウド - Mistralモデル |
| Ollama | ローカル - お使いのマシンでモデルを実行 |
| LM Studio | ローカル - お使いのマシンでモデルを実行 |
プロバイダーのセットアップは初回起動ウィザードから完了できます。
justコマンド| コマンド | 説明 |
|---|---|
just up | GHCRからビルド済みイメージをプルして全サービスを起動 |
just down | すべてのサービスを停止 |
just dev | DockerでAPI/ラボを実行し、ホスト上でUIをホットリロード(Node.jsが必要) |
just logs | サービスのログを追跡 |
just test api | APIユニットテストを実行(実行中のapiコンテナ内) |
just test ui | Playwright UIテストを実行 |
just test shim | docker-shimの許可/ブロックユニットテストを実行(Docker不要) |
just test all | すべてのテストスイートを順に実行 |
just reset | ローカルデータベースを消去 |
just shell | ラボコンテナでシェルを開く |