
La suite collaborative de pentest pour applications web.
Le proxy MITM collaboratif pour les testeurs de sécurité.
Capturez le trafic HTTP, annotez les requêtes avec l'IA, lancez des sessions de chasse, rejouez le trafic et suivez les constatations depuis une seule interface.
Démarrage rapide · Fonctionnalités · Captures d'écran · Configuration · Sécurité · Contribuer
git clone https://github.com/synlace/ferret.git
cd ferret
cp .env.example .env # optional
just up
Ou utilisez Docker Compose directement :
docker compose up --build -d
| Service | URL |
|---|---|
| UI | http://localhost:3000 |
| API | http://localhost:8000 |
| Proxy | 127.0.0.1:1337 |
Ouvrez :
http://localhost:3000
L'assistant de configuration initiale vous demandera de définir un mot de passe et de choisir un fournisseur d'IA.
justFerret est un proxy d'interception HTTP assisté par IA conçu pour les testeurs de sécurité.
Pointez votre navigateur, outil CLI ou flux de test vers :
127.0.0.1:1337
Ferret capture les requêtes et réponses, les stocke localement, annote le trafic avec l'IA et vous offre des outils pour rejouer, modifier, tester et transformer les comportements intéressants en constatations.
Il est conçu pour les flux de travail où vous voulez plus qu'un proxy passif : vous voulez quelque chose qui vous aide à réfléchir, tester et documenter au fur et à mesure.

Chasses - Sessions de chasse assistées par IA qui recherchent dans l'historique des requêtes, écrivent et exécutent des tests, et créent des constatations.

Historique - Journal complet des requêtes proxy avec annotations IA, temps, codes de statut et éditeurs de requêtes/réponses intégrés.

Constatations - Suivi des vulnérabilités avec sévérité, hôte, type, descriptions générées par IA et extraits de preuves.

Paramètres - Gérez le certificat CA, le mot de passe, la 2FA, le fournisseur d'IA, les clés API et le statut du proxy.

Assistant d'installation - Configuration initiale pour la création du mot de passe et la configuration du fournisseur d'IA.
Configurez votre navigateur, outil CLI ou client de test pour utiliser :
HTTP proxy: 127.0.0.1:1337
HTTPS proxy: 127.0.0.1:1337
Pour l'interception HTTPS, téléchargez et installez le certificat CA mitmproxy depuis la page Paramètres.
Ferret exige une authentification à chaque installation.
/login.HttpOnly SameSite=Strict d'une durée de 24 heures.La 2FA basée sur TOTP peut être activée depuis la page Paramètres.
Une fois activée, un code d'authentificateur valide est requis lors de la connexion.
Définissez une clé API statique dans .env :
FERRET_API_KEY=your-random-secret
Utilisez-la ensuite comme jeton Bearer :
curl -H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/requests
Les cookies de session et les jetons Bearer sont vérifiés indépendamment.
Copiez .env.example vers .env pour préconfigurer Ferret.
La plupart des paramètres du fournisseur d'IA peuvent également être configurés depuis l'assistant de configuration.
La configuration du fournisseur peut être effectuée depuis l'assistant de première exécution.
justBrowser / 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
Toutes les données persistantes sont stockées sous :
${FERRET_DATA_DIR:-./data}
Ferret utilise des montages par liaison plutôt que des volumes Docker nommés.
Pour effacer l'état local et redémarrer l'assistant de configuration :
just reset
Cela supprime la base de données locale, y compris les identifiants.
Vous pouvez également réinitialiser la configuration via l'API lorsque vous êtes authentifié :
curl -X DELETE \
-H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/setup
Pour le développement local de l'interface avec rechargement à chaud :
just dev
Cette commande exécute les conteneurs API et lab dans Docker tout en servant l'interface sur l'hôte via npm run dev. Node.js est requis sur l'hôte pour ce mode.
Exécutez les tests avec :
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 est conçu pour les flux de travail de tests de sécurité locaux et n'est pas durci pour une exposition publique.
Avant d'exposer Ferret en dehors de localhost, comprenez ce qui suit :
| Risque | Détail |
|---|---|
| Trafic proxy | Le proxy capture tout le trafic HTTP/HTTPS qui le traverse, y compris les identifiants. |
| Exposition de l'API | L'API expose l'historique des requêtes, les constatations et les fichiers des espaces de travail. |
| Exécution lab |
Utilisez un mot de passe fort et activez la 2FA depuis la page Paramètres.
N'ouvrez pas de ticket public pour les vulnérabilités de sécurité.
Consultez .github/SECURITY.md pour la politique de divulgation complète et les instructions de signalement.
Les divulgations passées sont publiées dans security/ dès que des correctifs sont disponibles.
Merci aux chercheurs suivants pour avoir divulgué de manière responsable des problèmes de sécurité :
| Chercheur | Problème | Année |
|---|---|---|
| Trent (@AzureADTrent) | DISC-2026-001 - RCE non authentifié via SSRF + mauvaise configuration de docker-socket-proxy | 2026 |
Ferret est activement développé.
Les idées, les rapports de bogues, les demandes de fonctionnalités et les contributions sont les bienvenus.
Vous voulez aider à le construire ?
E-mail : [email protected]
MIT - voir LICENSE.
| Fonctionnalité | Description |
|---|
| Proxy d'interception | Capture le trafic HTTP et HTTPS via mitmproxy. |
| Historique des requêtes | Parcourez, filtrez, inspectez et rejouez le trafic capturé. |
| Annotations IA | Enrichissez les requêtes avec un contexte pertinent pour la sécurité. |
| Chasses | Lancez des sessions de chasse assistées par IA sur le trafic capturé. |
| Constatations | Suivez les vulnérabilités avec sévérité, hôte, type, preuves et statut. |
| Snare | Interceptez et modifiez les requêtes ou réponses en cours de route. |
| Gnaw | Onglets de type repeater pour modifier et renvoyer des requêtes HTTP. |
| Espaces de travail | Répertoires scripts/, tests/ et notes/ par session. |
| Projets | Sépare l'historique des requêtes, les constatations, les espaces de travail et les clés API. |
| Authentification | Connexion par mot de passe, cookies de session, accès facultatif par clé API et 2FA TOTP. |
| Stockage local d'abord | Données stockées dans SQLite dans un répertoire local monté par liaison. |
| Variable | Défaut | Description |
|---|
FERRET_API_KEY | - | Jeton Bearer statique pour l'accès API programmatique |
OPENROUTER_MODEL | google/gemini-3-flash-preview | Modèle OpenRouter par défaut |
PROXY_HOST | 0.0.0.0 | Adresse de liaison du proxy |
PROXY_PORT | 1337 | Port du proxy |
UI_PORT | 3000 | Port de l'interface |
FERRET_DATA_DIR | ./data | Répertoire de données persistant |
NEXT_PUBLIC_API_URL | http://localhost:8000 | URL API utilisée par le navigateur |
NEXT_PUBLIC_SIGINT_URL | - | URL JSON facultative de flux SIGINT/actualités |
| Fournisseur | Type |
|---|
| OpenRouter | Cloud - API unifiée pour de nombreux modèles |
| OpenAI | Cloud - GPT-4o, o1 et autres |
| Anthropic | Cloud - modèles Claude |
| Gemini | Cloud - modèles Google Gemini |
| DeepSeek | Cloud - modèles DeepSeek |
| Mistral | Cloud - modèles Mistral |
| Ollama | Local - exécutez les modèles sur votre machine |
| LM Studio | Local - exécutez les modèles sur votre machine |
| Commande | Description |
|---|
just up | Télécharge les images préconstruites depuis GHCR et démarre tous les services |
just down | Arrête tous les services |
just dev | Exécute API/lab dans Docker et rechargement à chaud de l'interface sur l'hôte (nécessite Node.js) |
just logs | Suit les journaux des services |
just test api | Exécute les tests unitaires de l'API (dans le conteneur api en cours) |
just test ui | Exécute les tests d'interface Playwright |
just test shim | Exécute les tests unitaires allow/block de docker-shim (aucun Docker requis) |
just test all | Exécute toutes les suites de tests en séquence |
just reset | Efface la base de données locale |
just shell | Ouvre un shell dans le conteneur lab |
| Le conteneur lab peut exécuter des outils de test en votre nom. |
| Identifiants | Les clés API et les identifiants du fournisseur d'IA sont stockés localement et doivent être traités comme des secrets. |