
Aggregationstool für Scopes von HackerOne, Bugcrowd, Intigriti, YesWeHack und Immunefi!
Web-Oberfläche und API zum Aggregieren von Bug-Bounty-Programm-Scopes von HackerOne, Bugcrowd, Intigriti und YesWeHack.
cd website
cp .env.example .env
# Bearbeite .env — setze mindestens POSTGRES_PASSWORD und deine Plattform-Anmeldedaten
docker compose up -d --build
Die Seite wird unter https://yourdomain.com verfügbar sein (Caddy kümmert sich automatisch um HTTPS via Let's Encrypt).
Wenn Ihr Server hinter Cloudflare (proxied DNS) liegt, funktioniert die standardmäßige HTTP-ACME-Challenge nicht. Verwenden Sie stattdessen die Cloudflare-Compose-Datei, die einen benutzerdefinierten Caddy mit dem Cloudflare-DNS-Plugin erstellt:
docker compose -f docker-compose.cloudflare.yml up -d --build
Setze CF_API_TOKEN in deiner .env. Erstelle den Token unter https://dash.cloudflare.com/profile/api-tokens mit der Berechtigung Zone:DNS:Edit für deine Domain.
Voraussetzungen: Go 1.24+, eine laufende PostgreSQL-Instanz.
DB_URL="postgres://postgres:yourpassword@localhost:5432/bbscope?sslmode=disable" \
go run *.go serve --dev --poll-interval 0 --listen localhost:7001
Das Flag --dev aktiviert den HTTP-Only-Modus (kein TLS). --poll-interval 0 deaktiviert das Hintergrund-Polling, sodass Sie keine Plattform-Anmeldedaten benötigen.
Die Datenbankverbindung wird aus der Umgebungsvariable DB_URL oder db_url in ~/.bbscope.yaml gelesen.
Alle Plattform-Anmeldedaten sind optional. Nicht konfigurierte Plattformen werden während des Pollings einfach übersprungen.
Setze OPENAI_API_KEY und optional OPENAI_MODEL (standardmäßig gpt-4.1-mini), um die KI-basierte Normalisierung von Scope-Zielen zu aktivieren. Wird pro Ziel zwischengespeichert, um API-Aufrufe zu minimieren.
Um die Seite mit HTTP-Basic-Auth zu schützen:
Erzeuge einen Passwort-Hash:
docker run --rm caddy:2-alpine caddy hash-password --plaintext 'yourpassword'
Kopiere die Beispielkonfiguration in conf.d/:
cp basicauth.caddy.example conf.d/basicauth.caddy
Bearbeite conf.d/basicauth.caddy und füge deinen Benutzernamen und Hash hinzu:
basic_auth {
myuser $2a$14$hashgoeshere...
}
Starte Caddy neu: docker compose restart caddy
Zum Deaktivieren entferne conf.d/basicauth.caddy und starte neu.
caddy (ports 80/443) → bbscope-web (:8080) → postgres
conf.d/*.caddy werden automatisch importiert.Die Seite stellt eine öffentliche API bereit:
Abfrageparameter: scope (in/out/both), platform, type, raw (KI überspringen), format (json/text).
Die Standardausgabe ist zeilenumbruchgetrennter Text; füge format=json für JSON hinzu. Antworten werden 5 Minuten zwischengespeichert.
| Flag | Standard | Beschreibung |
|---|
--dev, -d | false | Entwicklungsmodus (HTTP, kein TLS) |
--poll-interval | 6 | Stunden zwischen Polling-Zyklen (0 zum Deaktivieren) |
--listen | :8080 | HTTP-Listen-Adresse |
--domain | bbscope.com | Domain für Sitemap/robots.txt |
| Plattform | Umgebungsvariablen | Hinweise |
|---|
| HackerOne | H1_USERNAME, H1_TOKEN | API-Token |
| Bugcrowd | BC_EMAIL, BC_PASSWORD, BC_OTP | Oder setze BC_PUBLIC_ONLY=1 für nur öffentliche Programme |
| Intigriti | IT_TOKEN | Bearer-Token |
| YesWeHack | YWH_EMAIL, YWH_PASSWORD, YWH_OTP | E-Mail + Passwort + OTP |
| Endpunkt | Beschreibung |
|---|
GET /api/v1/programs | Alle Programme auflisten |
GET /api/v1/programs/{platform}/{handle} | Details eines einzelnen Programms |
GET /api/v1/targets/{type} | Ziele nach Typ: wildcards, domains, urls, ips, cidrs |