
La suite collaborativa di pentest per applicazioni web
Il proxy MITP collaborativo per i tester di sicurezza.
Cattura il traffico HTTP, annota le richieste con l'IA, esegui sessioni di caccia, riproduci il traffico e tieni traccia dei risultati da un'unica interfaccia.
Avvio rapido · Funzionalità · Screenshot · Configurazione · Sicurezza · Contributi
git clone https://github.com/synlace/ferret.git
cd ferret
cp .env.example .env # opzionale
just up
Oppure usa Docker Compose direttamente:
docker compose up --build -d
| Servizio | URL |
|---|---|
| UI | http://localhost:3000 |
| API | http://localhost:8000 |
| Proxy | 127.0.0.1:1337 |
Apri:
http://localhost:3000
La procedura guidata del primo avvio ti chiederà di impostare una password e scegliere un provider AI.
justFerret è un proxy di intercettazione HTTP assistito dall'IA, progettato per tester di sicurezza.
Punta il tuo browser, strumento CLI o flusso di test verso:
127.0.0.1:1337
Ferret cattura richieste e risposte, le archivia localmente, annota il traffico con l'IA e ti fornisce strumenti per riprodurre, modificare, testare e trasformare comportamenti interessanti in segnalazioni.
È progettato per flussi di lavoro in cui desideri più di un proxy passivo: vuoi qualcosa che ti aiuti a pensare, testare e documentare mentre procedi.

Cacce – Sessioni di caccia assistite dall'IA che cercano nella cronologia richieste, scrivono ed eseguono test e creano segnalazioni.

Cronologia – Registro completo delle richieste proxy con annotazioni AI, tempi, codici di stato ed editor inline di richieste/risposte.

Segnalazioni – Tracker delle vulnerabilità con gravità, host, tipo, descrizioni generate dall'IA e frammenti di evidenza.

Impostazioni – Gestisci il certificato CA, la password, il 2FA, il provider AI, le chiavi API e lo stato del proxy.

Procedura guidata di configurazione – Configurazione del primo avvio per la creazione della password e la configurazione del provider AI.
Configura il browser, lo strumento CLI o il client di test per usare:
Proxy HTTP: 127.0.0.1:1337
Proxy HTTPS: 127.0.0.1:1337
Per l'intercettazione HTTPS, scarica e installa il certificato CA di mitmproxy dalla pagina Impostazioni.
Ferret richiede l'autenticazione su ogni installazione.
/login.HttpOnly SameSite=Strict valido 24 ore.La 2FA basata su TOTP può essere attivata dalla pagina Impostazioni.
Una volta attivata, è richiesto un codice autenticatore valido al login.
Imposta una chiave API statica in .env:
FERRET_API_KEY=la-tua-chiave-segreta
Poi usala come token Bearer:
curl -H "Authorization: Bearer la-tua-chiave-segreta" \
http://localhost:8000/api/requests
I cookie di sessione e i token Bearer vengono verificati indipendentemente.
Copia .env.example in .env per preconfigurare Ferret.
La maggior parte delle impostazioni del provider AI può essere configurata anche dalla procedura guidata.
La configurazione del provider può essere completata dalla procedura guidata del primo avvio.
justBrowser / strumento
│
▼
127.0.0.1:1337
│
▼
ferret-api :8000 / :1337
FastAPI + mitmproxy + SQLite
│
├── docker exec
▼
ferret-lab
pytest, ffuf, sqlmap, script, test, note
│
▼
ferret-ui :3000
Next.js
Tutti i dati persistenti sono archiviati in:
${FERRET_DATA_DIR:-./data}
Ferret utilizza bind mount invece di volumi Docker nominati.
Per cancellare lo stato locale e riavviare la procedura guidata:
just reset
Questo rimuove il database locale, incluse le credenziali.
Puoi anche resettare la configurazione tramite API quando autenticato:
curl -X DELETE \
-H "Authorization: Bearer la-tua-chiave-segreta" \
http://localhost:8000/api/setup
Per lo sviluppo locale dell'interfaccia utente con ricarica a caldo:
just dev
Questo esegue i container API e lab in Docker mentre serve l'UI sull'host tramite npm run dev. Node.js è richiesto sull'host per questa modalità.
Esegui i test con:
just test api # Test unitari API (nel container api in esecuzione)
just test ui # Test UI Playwright (avvia automaticamente il server dev Next.js + API fittizia)
just test shim # Test unitari allow/block di docker-shim (senza Docker)
just test all # esegue tutte e tre le suite in sequenza
Ferret è progettato per flussi di lavoro di test di sicurezza locali e non è indurito per l'esposizione pubblica.
Prima di esporre Ferret al di fuori di localhost, comprendi quanto segue:
| Rischio | Dettaglio |
|---|---|
| Traffico proxy | Il proxy cattura tutto il traffico HTTP/HTTPS che lo attraversa, incluse le credenziali. |
| Esposizione API | L'API espone cronologia richieste, segnalazioni e file del workspace. |
| Esecuzione lab | Il container lab può eseguire strumenti di test per tuo conto. |
Usa una password forte e attiva la 2FA dalla pagina Impostazioni.
Non aprire un issue pubblico per vulnerabilità di sicurezza.
Vedi .github/SECURITY.md per l'informativa completa sulla divulgazione e le istruzioni per la segnalazione.
Le divulgazioni passate sono pubblicate in security/ una volta disponibili le correzioni.
Grazie ai seguenti ricercatori per aver segnalato responsabilmente problemi di sicurezza:
| Ricercatore | Problema | Anno |
|---|---|---|
| Trent (@AzureADTrent) | DISC-2026-001 - RCE non autenticato tramite SSRF + errata configurazione del proxy docker-socket | 2026 |
Ferret è in fase di sviluppo attivo.
Idee, segnalazioni di bug, richieste di funzionalità e contributi sono benvenuti.
Vuoi aiutare a costruirlo?
Email: [email protected]
MIT - vedi LICENSE.
| Funzionalità | Descrizione |
|---|
| Proxy di intercettazione | Cattura traffico HTTP e HTTPS tramite mitmproxy. |
| Cronologia richieste | Sfoglia, filtra, ispeziona e riproduci il traffico catturato. |
| Annotazioni AI | Arricchisci le richieste con contesto rilevante per la sicurezza. |
| Cacce | Esegui sessioni di caccia assistite dall'IA sul traffico catturato. |
| Segnalazioni | Tieni traccia delle vulnerabilità con gravità, host, tipo, evidenza e stato. |
| Snare | Intercetta e modifica richieste o risposte in volo. |
| Gnaw | Schede stile repeater per modificare e reinviare richieste HTTP. |
| Workspace | Directory scripts/, tests/ e notes/ per sessione. |
| Progetti | Separa cronologia richieste, segnalazioni, workspace e chiavi API. |
| Autenticazione | Accesso tramite password, cookie di sessione, accesso API opzionale con chiave e 2FA TOTP. |
| Archiviazione locale | Dati su SQLite salvati in una directory locale montata con bind. |
| Variabile | Predefinito | Descrizione |
|---|
FERRET_API_KEY | - | Token statico Bearer per accesso API programmatico |
OPENROUTER_MODEL | google/gemini-3-flash-preview | Modello OpenRouter predefinito |
PROXY_HOST | 0.0.0.0 | Indirizzo di bind del proxy |
PROXY_PORT | 1337 | Porta del proxy |
UI_PORT | 3000 | Porta dell'interfaccia utente |
FERRET_DATA_DIR | ./data | Directory dati persistente |
NEXT_PUBLIC_API_URL | http://localhost:8000 | URL API usato dal browser |
NEXT_PUBLIC_SIGINT_URL | - | URL opzionale per feed SIGINT/news in JSON |
| Provider | Tipo |
|---|
| OpenRouter | Cloud - API unificata su molti modelli |
| OpenAI | Cloud - GPT-4o, o1 e altri |
| Anthropic | Cloud - Modelli Claude |
| Gemini | Cloud - Modelli Google Gemini |
| DeepSeek | Cloud - Modelli DeepSeek |
| Mistral | Cloud - Modelli Mistral |
| Ollama | Locale - esegui modelli sulla tua macchina |
| LM Studio | Locale - esegui modelli sulla tua macchina |
| Comando | Descrizione |
|---|
just up | Scarica le immagini pre-compilate da GHCR e avvia tutti i servizi |
just down | Ferma tutti i servizi |
just dev | Esegue API/lab in Docker e UI con ricarica a caldo sull'host (richiede Node.js) |
just logs | Segue i log dei servizi |
just test api | Esegue i test unitari dell'API (nel container api in esecuzione) |
just test ui | Esegue i test dell'interfaccia utente con Playwright |
just test shim | Esegue i test unitari allow/block di docker-shim (senza Docker) |
just test all | Esegue tutte le suite di test in sequenza |
just reset | Cancella il database locale |
just shell | Apre una shell nel container lab |
| Credenziali | Le chiavi API e le credenziali del provider AI sono memorizzate localmente e vanno trattate come segrete. |