
Die kollaborative Web-App-Pentest-Suite
Der kollaborative MITM-Proxy für Sicherheitstester.
HTTP-Traffic erfassen, Anfragen mit KI annotieren, Jagdsitzungen durchführen, Traffic wiedergeben und Ergebnisse aus einer Oberfläche verfolgen.
Schnellstart · Funktionen · Bildschirmfotos · Konfiguration · Sicherheit · Mitwirken
git clone https://github.com/synlace/ferret.git
cd ferret
cp .env.example .env # optional
just up
Oder direkt Docker Compose verwenden:
docker compose up --build -d
| Dienst | URL |
|---|---|
| UI | http://localhost:3000 |
| API | http://localhost:8000 |
| Proxy | 127.0.0.1:1337 |
Öffnen:
http://localhost:3000
Der Einrichtungsassistent beim ersten Start fragt Sie nach einem Passwort und einem KI-Anbieter.
justFerret ist ein KI-gestützter HTTP-Interception-Proxy für Sicherheitstester.
Richten Sie Ihren Browser, Ihr CLI-Tool oder Ihren Test-Workflow auf Folgendes aus:
127.0.0.1:1337
Ferret erfasst Anfragen und Antworten, speichert sie lokal, annotiert den Traffic mit KI und bietet Werkzeuge zum Wiederholen, Modifizieren, Testen und Umwandeln interessanten Verhaltens in Ergebnisse.
Es ist für Workflows konzipiert, bei denen Sie mehr als einen passiven Proxy benötigen: etwas, das Ihnen hilft, während der Arbeit zu denken, zu testen und zu dokumentieren.

Jagden – KI-gestützte Jagdsitzungen, die den Anfrageverlauf durchsuchen, Tests schreiben und ausführen sowie Ergebnisse erstellen.

Verlauf – Ein vollständiges protokolliertes Proxy-Anfragenprotokoll mit KI-Anmerkungen, Zeitangaben, Statuscodes und integrierten Anfrage-/Antwort-Editoren.

Ergebnisse – Ein Schwachstellen-Tracker mit Schweregrad, Host, Typ, KI-generierten Beschreibungen und Beweis-Schnipseln.

Einstellungen – CA-Zertifikat, Passwort, 2FA, KI-Anbieter, API-Schlüssel und Proxy-Status verwalten.

Einrichtungsassistent – Ersteinrichtung für Passworterstellung und KI-Anbieterkonfiguration.
Konfigurieren Sie Ihren Browser, Ihr CLI-Tool oder Ihren Test-Client wie folgt:
HTTP-Proxy: 127.0.0.1:1337
HTTPS-Proxy: 127.0.0.1:1337
Für HTTPS-Interception laden Sie das mitmproxy-CA-Zertifikat von der Seite Einstellungen herunter und installieren Sie es.
Ferret erfordert bei jeder Installation eine Authentifizierung.
/login an.HttpOnly-SameSite=Strict-Sitzungs-Cookie aus.TOTP-basierte 2FA kann auf der Seite Einstellungen aktiviert werden.
Nach der Aktivierung ist beim Login ein gültiger Authentifikator-Code erforderlich.
Legen Sie einen statischen API-Schlüssel in .env fest:
FERRET_API_KEY=your-random-secret
Verwenden Sie ihn dann als Bearer-Token:
curl -H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/requests
Sitzungs-Cookies und Bearer-Tokens werden unabhängig voneinander geprüft.
Kopieren Sie .env.example nach .env, um Ferret vorzukonfigurieren.
Die meisten KI-Anbietereinstellungen können auch über den Einrichtungsassistenten konfiguriert werden.
Die Anbieterkonfiguration kann über den Erststart-Assistenten abgeschlossen werden.
just-BefehleBrowser / Tool
│
▼
127.0.0.1:1337
│
▼
ferret-api :8000 / :1337
FastAPI + mitmproxy + SQLite
│
├── docker exec
▼
ferret-lab
pytest, ffuf, sqlmap, scripts, tests, notes
│
▼
ferret-ui :3000
Next.js
Alle persistenten Daten werden unter folgendem Pfad gespeichert:
${FERRET_DATA_DIR:-./data}
Ferret verwendet Bind Mounts anstelle benannter Docker-Volumes.
Um den lokalen Zustand zu löschen und den Einrichtungsassistenten neu zu starten:
just reset
Dies löscht die lokale Datenbank einschließlich der Anmeldedaten.
Sie können die Einrichtung auch über die API zurücksetzen, wenn Sie authentifiziert sind:
curl -X DELETE \
-H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/setup
Für lokale UI-Entwicklung mit Hot Reload:
just dev
Dies führt die API- und Lab-Container in Docker aus, während die UI auf dem Host über npm run dev bereitgestellt wird. Für diesen Modus wird Node.js auf dem Host benötigt.
Tests ausführen mit:
just test api # API unit tests (inside the running api container)
just test ui # Playwright UI tests (auto-starts Next.js dev server + mock API)
just test shim # docker-shim allow/block unit tests (no Docker needed)
just test all # run all three suites in sequence
Ferret ist für lokale Sicherheitstest-Workflows konzipiert und nicht für die öffentliche Exposition gehärtet.
Bevor Sie Ferret außerhalb von localhost bereitstellen, beachten Sie Folgendes:
| Risiko | Einzelheiten |
|---|---|
| Proxy-Traffic | Der Proxy erfasst den gesamten durch ihn fließenden HTTP/HTTPS-Traffic, einschließlich Anmeldedaten. |
| API-Exposition | Die API legt Anfrageverlauf, Ergebnisse und Arbeitsbereichsdateien offen. |
| Lab-Ausführung | Der Lab-Container kann Testwerkzeuge in Ihrem Namen ausführen. |
Verwenden Sie ein starkes Passwort und aktivieren Sie 2FA auf der Seite Einstellungen.
Öffnen Sie kein öffentliches Issue für Sicherheitslücken.
Siehe .github/SECURITY.md für die vollständige Offenlegungsrichtlinie und Meldeanweisungen.
Vergangene Offenlegungen werden in security/ veröffentlicht, sobald Korrekturen verfügbar sind.
Dank an die folgenden Forscher für die verantwortungsvolle Offenlegung von Sicherheitsproblemen:
| Forscher | Problem | Jahr |
|---|---|---|
| Trent (@AzureADTrent) | DISC-2026-001 – Unauthenticated RCE via SSRF + Fehlkonfiguration des Docker-Socket-Proxys | 2026 |
Ferret wird aktiv weiterentwickelt.
Ideen, Fehlerberichte, Funktionsanfragen und Beiträge sind willkommen.
Möchten Sie beim Bauen helfen?
E-Mail: [email protected]
MIT – siehe LICENSE.
| Funktion | Beschreibung |
|---|
| Abfangproxy | HTTP- und HTTPS-Traffic über mitmproxy erfassen. |
| Anfrageverlauf | Erfassten Traffic durchsuchen, filtern, inspizieren und wiedergeben. |
| KI-Anmerkungen | Anfragen mit sicherheitsrelevantem Kontext anreichern. |
| Jagden | KI-gestützte Jagdsitzungen über erfassten Traffic ausführen. |
| Ergebnisse | Schwachstellen mit Schweregrad, Host, Typ, Beweis und Status verfolgen. |
| Snare | Anfragen oder Antworten während der Übertragung abfangen und modifizieren. |
| Gnaw | Repeater-ähnliche Tabs zum Bearbeiten und erneuten Senden von HTTP-Anfragen. |
| Arbeitsbereiche | Pro Sitzung scripts/, tests/ und notes/-Verzeichnisse. |
| Projekte | Getrennten Anfrageverlauf, Ergebnisse, Arbeitsbereiche und API-Schlüssel. |
| Authentifizierung | Passwort-Login, Sitzungs-Cookies, optionaler API-Schlüssel-Zugriff und TOTP-2FA. |
| Lokale Speicherung bevorzugt | SQLite-gestützte Daten in einem lokal eingehängten Verzeichnis. |
| Variable | Standard | Beschreibung |
|---|
FERRET_API_KEY | - | Statisches Bearer-Token für den programmatischen API-Zugriff |
OPENROUTER_MODEL | google/gemini-3-flash-preview | Standard-OpenRouter-Modell |
PROXY_HOST | 0.0.0.0 | Proxy-Bindeadresse |
PROXY_PORT | 1337 | Proxy-Port |
UI_PORT | 3000 | UI-Port |
FERRET_DATA_DIR | ./data | Persistentes Datenverzeichnis |
NEXT_PUBLIC_API_URL | http://localhost:8000 | API-URL, die vom Browser verwendet wird |
NEXT_PUBLIC_SIGINT_URL | - | Optionale SIGINT-/News-Feed-JSON-URL |
| Anbieter | Typ |
|---|
| OpenRouter | Cloud – einheitliche API für viele Modelle |
| OpenAI | Cloud – GPT-4o, o1 und andere |
| Anthropic | Cloud – Claude-Modelle |
| Gemini | Cloud – Google-Gemini-Modelle |
| DeepSeek | Cloud – DeepSeek-Modelle |
| Mistral | Cloud – Mistral-Modelle |
| Ollama | Lokal – Modelle auf Ihrem Rechner ausführen |
| LM Studio | Lokal – Modelle auf Ihrem Rechner ausführen |
| Befehl | Beschreibung |
|---|
just up | Vorgefertigte Images von GHCR ziehen und alle Dienste starten |
just down | Alle Dienste stoppen |
just dev | API/Lab in Docker und UI mit Hot Reload auf dem Host ausführen (erfordert Node.js) |
just logs | Dienstprotokolle anzeigen |
just test api | API-Komponententests ausführen (im laufenden api-Container) |
just test ui | Playwright-UI-Tests ausführen |
just test shim | Docker-Shim-Allow/Block-Komponententests ausführen (kein Docker erforderlich) |
just test all | Alle Testsuiten nacheinander ausführen |
just reset | Lokale Datenbank löschen |
just shell | Eine Shell im Lab-Container öffnen |
| Anmeldedaten | API-Schlüssel und KI-Anbieter-Anmeldedaten werden lokal gespeichert und sollten als Geheimnisse behandelt werden. |