
Strumento di aggregazione degli scope per HackerOne, Bugcrowd, Intigriti, YesWeHack e Immunefi!
Interfaccia web e API per aggregare gli ambiti dei programmi di bug bounty da HackerOne, Bugcrowd, Intigriti e YesWeHack.
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).
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.
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.
La connessione al database viene letta dalla variabile d'ambiente DB_URL o da db_url in ~/.bbscope.yaml.
Tutte le credenziali delle piattaforme sono opzionali. Le piattaforme non configurate vengono semplicemente saltate durante il polling.
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.
Per proteggere il sito con HTTP basic auth:
Genera un hash della password:
docker run --rm caddy:2-alpine caddy hash-password --plaintext 'yourpassword'
Copia la configurazione di esempio in conf.d/:
cp basicauth.caddy.example conf.d/basicauth.caddy
Modifica conf.d/basicauth.caddy e aggiungi il tuo nome utente e hash:
basic_auth {
myuser $2a$14$hashgoeshere...
}
Riavvia Caddy: docker compose restart caddy
Per disabilitare, rimuovi conf.d/basicauth.caddy e riavvia.
caddy (ports 80/443) → bbscope-web (:8080) → postgres
conf.d/*.caddy vengono importati automaticamente.Il sito espone un'API pubblica:
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.
| Flag | Predefinito | Descrizione |
|---|
--dev, -d | false | Modalità di sviluppo (HTTP, senza TLS) |
--poll-interval | 6 | Ore tra i cicli di polling (0 per disabilitare) |
--listen | :8080 | Indirizzo di ascolto HTTP |
--domain | bbscope.com | Dominio per sitemap/robots.txt |
| Piattaforma | Variabili d'ambiente | Note |
|---|
| HackerOne | H1_USERNAME, H1_TOKEN | Token API |
| Bugcrowd | BC_EMAIL, BC_PASSWORD, BC_OTP | Oppure imposta BC_PUBLIC_ONLY=1 per soli programmi pubblici |
| Intigriti | IT_TOKEN | Token Bearer |
| YesWeHack | YWH_EMAIL, YWH_PASSWORD, YWH_OTP | Email + password + OTP |
| Endpoint | Descrizione |
|---|
GET /api/v1/programs | Elenca 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 |