Torna agli aggiornamenti
UpdatedJul 20, 2026

bbscope — Updated!

Strumento di aggregazione degli scope per HackerOne, Bugcrowd, Intigriti, YesWeHack e Immunefi!

Condividi

bbscope.com

Interfaccia web e API per aggregare gli ambiti dei programmi di bug bounty da HackerOne, Bugcrowd, Intigriti e YesWeHack.

Avvio rapido (Docker)

cd website
cp .env.example .env
# Edit .env — at minimum set POSTGRES_PASSWORD and your platform credentials
docker compose up -d --build

Il sito sarà disponibile all'indirizzo https://yourdomain.com (Caddy gestisce automaticamente HTTPS tramite Let's Encrypt).

Sfida DNS di Cloudflare

Se il server è dietro Cloudflare (DNS proxato), la challenge ACME HTTP standard non funzionerà. Usa invece il file compose per Cloudflare, che costruisce un Caddy personalizzato con il plugin DNS di Cloudflare:

docker compose -f docker-compose.cloudflare.yml up -d --build

Imposta CF_API_TOKEN nel tuo file .env. Crea il token su https://dash.cloudflare.com/profile/api-tokens con permesso Zone:DNS:Edit per il tuo dominio.

Sviluppo locale

Requisiti: Go 1.24+, un'istanza PostgreSQL in esecuzione.

DB_URL="postgres://postgres:yourpassword@localhost:5432/bbscope?sslmode=disable" \
  go run *.go serve --dev --poll-interval 0 --listen localhost:7001

Il flag --dev abilita la modalità solo HTTP (nessun TLS). --poll-interval 0 disabilita il polling in background in modo da non aver bisogno delle credenziali delle piattaforme.

Flag del comando serve

FlagPredefinitoDescrizione
--dev, -dfalseModalità di sviluppo (HTTP, senza TLS)
--poll-interval6Ore tra i cicli di polling (0 per disabilitare)
--listen:8080Indirizzo di ascolto HTTP
--domainbbscope.comDominio per sitemap/robots.txt

La connessione al database viene letta dalla variabile d'ambiente DB_URL o da db_url in ~/.bbscope.yaml.

Configurazione

Credenziali della piattaforma

Tutte le credenziali delle piattaforme sono opzionali. Le piattaforme non configurate vengono semplicemente saltate durante il polling.

PiattaformaVariabili d'ambienteNote
HackerOneH1_USERNAME, H1_TOKENToken API
BugcrowdBC_EMAIL, BC_PASSWORD, BC_OTPOppure imposta BC_PUBLIC_ONLY=1 per soli programmi pubblici
IntigritiIT_TOKENToken Bearer
YesWeHackYWH_EMAIL, YWH_PASSWORD, YWH_OTPEmail + password + OTP

Normalizzazione AI (opzionale)

Imposta OPENAI_API_KEY e opzionalmente OPENAI_MODEL (predefinito gpt-4.1-mini) per abilitare la normalizzazione automatica degli obiettivi di ambito basata su AI. Viene memorizzato nella cache per obiettivo per minimizzare le chiamate API.

Autenticazione di base (opzionale)

Per proteggere il sito con HTTP basic auth:

  1. Genera un hash della password:

    docker run --rm caddy:2-alpine caddy hash-password --plaintext 'yourpassword'
    
  2. Copia la configurazione di esempio in conf.d/:

    cp basicauth.caddy.example conf.d/basicauth.caddy
    
  3. Modifica conf.d/basicauth.caddy e aggiungi il tuo nome utente e hash:

    basic_auth {
        myuser $2a$14$hashgoeshere...
    }
    
  4. Riavvia Caddy: docker compose restart caddy

Per disabilitare, rimuovi conf.d/basicauth.caddy e riavvia.

Architettura

caddy (ports 80/443) → bbscope-web (:8080) → postgres
  • Caddy gestisce la terminazione TLS e il proxy inverso. I frammenti di configurazione extra in conf.d/*.caddy vengono importati automaticamente.
  • bbscope-web serve il sito ed esegue i poller in background.
  • PostgreSQL memorizza programmi, obiettivi e cronologia delle modifiche di ambito. Lo schema viene migrato automaticamente all'avvio.

API

Il sito espone un'API pubblica:

EndpointDescrizione
GET /api/v1/programsElenca tutti i programmi
GET /api/v1/programs/{platform}/{handle}Dettaglio di un singolo programma
GET /api/v1/targets/{type}Obiettivi per tipo: wildcards, domains, urls, ips, cidrs

Parametri di query: scope (in/out/both), platform, type, raw (salta AI), format (json/text).

L'output predefinito è testo delimitato da nuove righe; aggiungi format=json per JSON. Le risposte vengono memorizzate nella cache per 5 minuti.

Categorie