
Herramienta de agregación de alcance para HackerOne, Bugcrowd, Intigriti, YesWeHack e Immunefi!
Interfaz web y API para agregar ámbitos de programas de bug bounty de HackerOne, Bugcrowd, Intigriti y YesWeHack.
cd website
cp .env.example .env
# Edita .env — como mínimo establece POSTGRES_PASSWORD y tus credenciales de la plataforma
docker compose up -d --build
El sitio estará disponible en https://yourdomain.com (Caddy gestiona HTTPS automáticamente mediante Let's Encrypt).
Si tu servidor está detrás de Cloudflare (DNS proxyficado), el desafío ACME HTTP estándar no funcionará. Usa el archivo de composición de Cloudflare, que construye un Caddy personalizado con el plugin DNS de Cloudflare:
docker compose -f docker-compose.cloudflare.yml up -d --build
Establece CF_API_TOKEN en tu .env. Crea el token en https://dash.cloudflare.com/profile/api-tokens con el permiso Zone:DNS:Edit para tu dominio.
Requisitos: Go 1.24+, una instancia de PostgreSQL en ejecución.
DB_URL="postgres://postgres:yourpassword@localhost:5432/bbscope?sslmode=disable" \
go run *.go serve --dev --poll-interval 0 --listen localhost:7001
La bandera --dev habilita el modo solo HTTP (sin TLS). --poll-interval 0 desactiva el sondeo en segundo plano para que no necesites credenciales de la plataforma.
La conexión a la base de datos se lee de la variable de entorno DB_URL o de db_url en ~/.bbscope.yaml.
Todas las credenciales de la plataforma son opcionales. Las plataformas no configuradas simplemente se omiten durante el sondeo.
Establece OPENAI_API_KEY y opcionalmente OPENAI_MODEL (por defecto gpt-4.1-mini) para habilitar la normalización de objetivos del ámbito basada en IA. Se almacena en caché por objetivo para minimizar las llamadas a la API.
Para proteger el sitio con autenticación básica HTTP:
Genera un hash de contraseña:
docker run --rm caddy:2-alpine caddy hash-password --plaintext 'yourpassword'
Copia la configuración de ejemplo en conf.d/:
cp basicauth.caddy.example conf.d/basicauth.caddy
Edita conf.d/basicauth.caddy y añade tu nombre de usuario y hash:
basic_auth {
myuser $2a$14$hashgoeshere...
}
Reinicia Caddy: docker compose restart caddy
Para desactivar, elimina conf.d/basicauth.caddy y reinicia.
caddy (ports 80/443) → bbscope-web (:8080) → postgres
conf.d/*.caddy se importan automáticamente.El sitio expone una API pública:
Parámetros de consulta: scope (in/out/both), platform, type, raw (omitir IA), format (json/text).
La salida predeterminada es texto delimitado por saltos de línea; añade format=json para JSON. Las respuestas se almacenan en caché durante 5 minutos.
| Bandera | Predeterminado | Descripción |
|---|
--dev, -d | false | Modo desarrollo (HTTP, sin TLS) |
--poll-interval | 6 | Horas entre ciclos de sondeo (0 para desactivar) |
--listen | :8080 | Dirección de escucha HTTP |
--domain | bbscope.com | Dominio para el mapa del sitio / robots.txt |
| Plataforma | Variables de entorno | Notas |
|---|
| HackerOne | H1_USERNAME, H1_TOKEN | Token de API |
| Bugcrowd | BC_EMAIL, BC_PASSWORD, BC_OTP | O establece BC_PUBLIC_ONLY=1 solo para programas públicos |
| Intigriti | IT_TOKEN | Token Bearer |
| YesWeHack | YWH_EMAIL, YWH_PASSWORD, YWH_OTP | Correo electrónico + contraseña + OTP |
| Endpoint | Descripción |
|---|
GET /api/v1/programs | Listar todos los programas |
GET /api/v1/programs/{platform}/{handle} | Detalle de un solo programa |
GET /api/v1/targets/{type} | Objetivos por tipo: wildcards, domains, urls, ips, cidrs |