
Outil d'agrégation de scope pour HackerOne, Bugcrowd, Intigriti, YesWeHack et Immunefi !
Interface web et API pour agréger les portées des programmes de bug bounty provenant de HackerOne, Bugcrowd, Intigriti et YesWeHack.
cd website
cp .env.example .env
# Edit .env — at minimum set POSTGRES_PASSWORD and your platform credentials
docker compose up -d --build
Le site sera disponible à l'adresse https://yourdomain.com (Caddy gère automatiquement le HTTPS via Let's Encrypt).
Si votre serveur est derrière Cloudflare (DNS proxy), le défi HTTP ACME standard ne fonctionnera pas. Utilisez plutôt le fichier compose Cloudflare, qui construit un Caddy personnalisé avec le plugin DNS Cloudflare :
docker compose -f docker-compose.cloudflare.yml up -d --build
Définissez CF_API_TOKEN dans votre .env. Créez le jeton sur https://dash.cloudflare.com/profile/api-tokens avec la permission Zone:DNS:Edit pour votre domaine.
Prérequis : Go 1.24+, une instance PostgreSQL en cours d'exécution.
DB_URL="postgres://postgres:yourpassword@localhost:5432/bbscope?sslmode=disable" \
go run *.go serve --dev --poll-interval 0 --listen localhost:7001
Le drapeau --dev active le mode HTTP uniquement (pas de TLS). --poll-interval 0 désactive l'interrogation en arrière-plan, vous n'avez donc pas besoin d'informations d'identification de plateforme.
La connexion à la base de données est lue depuis la variable d'environnement DB_URL ou db_url dans ~/.bbscope.yaml.
Tous les identifiants de plateforme sont facultatifs. Les plateformes non configurées sont simplement ignorées lors de l'interrogation.
Définissez OPENAI_API_KEY et éventuellement OPENAI_MODEL (par défaut gpt-4.1-mini) pour activer la normalisation des cibles de portée basée sur l'IA. Mise en cache par cible pour minimiser les appels API.
Pour protéger le site avec une authentification de base HTTP :
Générez un hash de mot de passe :
docker run --rm caddy:2-alpine caddy hash-password --plaintext 'yourpassword'
Copiez la configuration exemple dans conf.d/ :
cp basicauth.caddy.example conf.d/basicauth.caddy
Modifiez conf.d/basicauth.caddy et ajoutez votre nom d'utilisateur et votre hash :
basic_auth {
myuser $2a$14$hashgoeshere...
}
Redémarrez Caddy : docker compose restart caddy
Pour désactiver, supprimez conf.d/basicauth.caddy et redémarrez.
caddy (ports 80/443) → bbscope-web (:8080) → postgres
conf.d/*.caddy sont importés automatiquement.Le site expose une API publique :
Paramètres de requête : scope (in/out/both), platform, type, raw (ignorer IA), format (json/text).
La sortie par défaut est du texte délimité par des sauts de ligne ; ajoutez format=json pour du JSON. Les réponses sont mises en cache pendant 5 minutes.
| Drapeau | Défaut | Description |
|---|
--dev, -d | false | Mode développement (HTTP, pas de TLS) |
--poll-interval | 6 | Heures entre les cycles d'interrogation (0 pour désactiver) |
--listen | :8080 | Adresse d'écoute HTTP |
--domain | bbscope.com | Domaine pour sitemap/robots.txt |
| Plateforme | Variables d'environnement | Notes |
|---|
| HackerOne | H1_USERNAME, H1_TOKEN | Jeton API |
| Bugcrowd | BC_EMAIL, BC_PASSWORD, BC_OTP | Ou définissez BC_PUBLIC_ONLY=1 pour les programmes publics uniquement |
| Intigriti | IT_TOKEN | Jeton Bearer |
| YesWeHack | YWH_EMAIL, YWH_PASSWORD, YWH_OTP | Email + mot de passe + OTP |
| Point d'accès | Description |
|---|
GET /api/v1/programs | Lister tous les programmes |
GET /api/v1/programs/{platform}/{handle} | Détail d'un programme |
GET /api/v1/targets/{type} | Cibles par type : wildcards, domains, urls, ips, cidrs |