
La suite colaborativa de pentest para aplicaciones web
El proxy MITM colaborativo para testers de seguridad.
Captura tráfico HTTP, anota solicitudes con IA, ejecuta sesiones de caza, reproduce tráfico y realiza un seguimiento de los hallazgos desde una única interfaz.
Inicio rápido · Características · Capturas de pantalla · Configuración · Seguridad · Contribuciones
git clone https://github.com/synlace/ferret.git
cd ferret
cp .env.example .env # optional
just up
O usa Docker Compose directamente:
docker compose up --build -d
| Servicio | URL |
|---|---|
| UI | http://localhost:3000 |
| API | http://localhost:8000 |
| Proxy | 127.0.0.1:1337 |
Abre:
http://localhost:3000
El asistente de configuración inicial te pedirá establecer una contraseña y elegir un proveedor de IA.
justFerret es un proxy de interceptación HTTP asistido por IA, diseñado para testers de seguridad.
Apunta tu navegador, herramienta CLI o flujo de pruebas a:
127.0.0.1:1337
Ferret captura solicitudes y respuestas, las almacena localmente, anota el tráfico con IA y te ofrece herramientas para reproducir, modificar, probar y convertir comportamientos interesantes en hallazgos.
Está diseñado para flujos de trabajo en los que quieres algo más que un proxy pasivo: quieres algo que te ayude a pensar, probar y documentar mientras avanzas.

Hunts - Sesiones de caza asistidas por IA que buscan en el historial de solicitudes, escriben y ejecutan pruebas, y crean hallazgos.

History - Registro completo de solicitudes proxyadas con anotaciones de IA, tiempos, códigos de estado y editores de solicitudes/respuestas en línea.

Findings - Rastreador de vulnerabilidades con severidad, host, tipo, descripciones generadas por IA y fragmentos de evidencia.

Settings - Gestiona el certificado CA, la contraseña, la 2FA, el proveedor de IA, las claves de API y el estado del proxy.

Asistente de configuración - Configuración inicial para crear la contraseña y el proveedor de IA.
Configura tu navegador, herramienta CLI o cliente de pruebas para usar:
HTTP proxy: 127.0.0.1:1337
HTTPS proxy: 127.0.0.1:1337
Para la interceptación HTTPS, descarga e instala el certificado CA de mitmproxy desde la página de Settings.
Ferret requiere autenticación en cada instalación.
/login.HttpOnly SameSite=Strict con una validez de 24 horas.La 2FA basada en TOTP puede habilitarse desde la página de Settings.
Una vez habilitada, se requiere un código de autenticador válido al iniciar sesión.
Establece una clave de API estática en .env:
FERRET_API_KEY=your-random-secret
Luego úsala como token Bearer:
curl -H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/requests
Las cookies de sesión y los tokens Bearer se verifican de forma independiente.
Copia .env.example a .env para preconfigurar Ferret.
La mayoría de los ajustes del proveedor de IA también pueden configurarse desde el asistente de configuración.
La configuración del proveedor puede completarse desde el asistente de primera ejecución.
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
Todos los datos persistentes se almacenan en:
${FERRET_DATA_DIR:-./data}
Ferret usa bind mounts en lugar de volúmenes Docker con nombre.
Para borrar el estado local y reiniciar el asistente de configuración:
just reset
Esto elimina la base de datos local, incluidas las credenciales.
También puedes restablecer la configuración a través de la API cuando estés autenticado:
curl -X DELETE \
-H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/setup
Para el desarrollo local de la UI con recarga en caliente:
just dev
Esto ejecuta los contenedores de API y lab en Docker mientras sirve la UI en el host mediante npm run dev. Se requiere Node.js en el host para este modo.
Ejecuta las pruebas con:
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á diseñado para flujos de trabajo de pruebas de seguridad locales y no está endurecido para exposición pública.
Antes de exponer Ferret fuera de localhost, ten en cuenta lo siguiente:
| Riesgo | Detalle |
|---|---|
| Tráfico del proxy | El proxy captura todo el tráfico HTTP/HTTPS que pasa a través de él, incluidas las credenciales. |
| Exposición de la API | La API expone el historial de solicitudes, los hallazgos y los archivos del workspace. |
Usa una contraseña segura y habilita la 2FA desde la página de Settings.
No abras un issue público para vulnerabilidades de seguridad.
Consulta .github/SECURITY.md para conocer la política de divulgación completa y las instrucciones para reportar.
Las divulgaciones anteriores se publican en security/ una vez que los parches están disponibles.
Gracias a los siguientes investigadores por divulgar responsablemente problemas de seguridad:
| Investigador | Problema | Año |
|---|---|---|
| Trent (@AzureADTrent) | DISC-2026-001 - RCE no autenticado mediante SSRF + mala configuración de docker-socket-proxy | 2026 |
Ferret está en desarrollo activo.
Las ideas, informes de errores, solicitudes de funciones y contribuciones son bienvenidos.
¿Quieres ayudar a construirlo?
Correo electrónico: [email protected]
MIT - consulta LICENSE.
| Característica | Descripción |
|---|
| Proxy de interceptación | Captura tráfico HTTP y HTTPS a través de mitmproxy. |
| Historial de solicitudes | Navega, filtra, inspecciona y reproduce el tráfico capturado. |
| Anotaciones con IA | Enriquece las solicitudes con contexto relevante para la seguridad. |
| Hunts | Ejecuta sesiones de caza asistidas por IA en el tráfico capturado. |
| Findings | Realiza un seguimiento de vulnerabilidades con severidad, host, tipo, evidencia y estado. |
| Snare | Intercepta y modifica solicitudes o respuestas en vuelo. |
| Gnaw | Pestañas estilo repeater para editar y reenviar solicitudes HTTP. |
| Workspaces | Directorios scripts/, tests/ y notes/ por sesión. |
| Projects | Separa historial de solicitudes, hallazgos, workspaces y claves de API. |
| Autenticación | Inicio de sesión con contraseña, cookies de sesión, acceso opcional con clave de API y 2FA TOTP. |
| Almacenamiento local | Datos respaldados por SQLite en un directorio montado localmente. |
| Variable | Default | Descripción |
|---|
FERRET_API_KEY | - | Token Bearer estático para acceso programático a la API |
OPENROUTER_MODEL | google/gemini-3-flash-preview | Modelo predeterminado de OpenRouter |
PROXY_HOST | 0.0.0.0 | Dirección de enlace del proxy |
PROXY_PORT | 1337 | Puerto del proxy |
UI_PORT | 3000 | Puerto de la interfaz |
FERRET_DATA_DIR | ./data | Directorio de datos persistente |
NEXT_PUBLIC_API_URL | http://localhost:8000 | URL de la API usada por el navegador |
NEXT_PUBLIC_SIGINT_URL | - | URL JSON opcional de SIGINT/feed de noticias |
| Proveedor | Tipo |
|---|
| OpenRouter | Nube - API unificada para muchos modelos |
| OpenAI | Nube - GPT-4o, o1 y otros |
| Anthropic | Nube - modelos Claude |
| Gemini | Nube - modelos Google Gemini |
| DeepSeek | Nube - modelos DeepSeek |
| Mistral | Nube - modelos Mistral |
| Ollama | Local - ejecuta modelos en tu máquina |
| LM Studio | Local - ejecuta modelos en tu máquina |
| Comando | Descripción |
|---|
just up | Descarga las imágenes precompiladas desde GHCR e inicia todos los servicios |
just down | Detiene todos los servicios |
just dev | Ejecuta API/lab en Docker y recarga en caliente la UI en el host (requiere Node.js) |
just logs | Muestra los registros de los servicios |
just test api | Ejecuta las pruebas unitarias de la API (dentro del contenedor de api en ejecución) |
just test ui | Ejecuta las pruebas de UI con Playwright |
just test shim | Ejecuta las pruebas unitarias allow/block del docker-shim (no requiere Docker) |
just test all | Ejecuta todas las suites de pruebas en secuencia |
just reset | Borra la base de datos local |
just shell | Abre un shell en el contenedor lab |
| Ejecución en el lab |
| El contenedor lab puede ejecutar herramientas de pruebas en tu nombre. |
| Credenciales | Las claves de API y las credenciales del proveedor de IA se almacenan localmente y deben tratarse como secretos. |