
Ferramenta de agregação de escopo para HackerOne, Bugcrowd, Intigriti, YesWeHack e Immunefi!
Interface web e API para agregar escopos de programas de bug bounty do HackerOne, Bugcrowd, Intigriti e YesWeHack.
cd website
cp .env.example .env
# Edite o .env — no mínimo defina POSTGRES_PASSWORD e suas credenciais das plataformas
docker compose up -d --build
O site estará disponível em https://seu-dominio.com (o Caddy gerencia HTTPS automaticamente via Let's Encrypt).
Se o seu servidor estiver atrás do Cloudflare (DNS com proxy), o desafio HTTP ACME padrão não funcionará. Use o arquivo compose do Cloudflare, que constrói um Caddy personalizado com o plugin DNS do Cloudflare:
docker compose -f docker-compose.cloudflare.yml up -d --build
Defina CF_API_TOKEN no seu .env. Crie o token em https://dash.cloudflare.com/profile/api-tokens com permissão Zone:DNS:Edit para seu domínio.
Requisitos: Go 1.24+, uma instância PostgreSQL em execução.
DB_URL="postgres://postgres:yourpassword@localhost:5432/bbscope?sslmode=disable" \
go run *.go serve --dev --poll-interval 0 --listen localhost:7001
A flag --dev ativa o modo apenas HTTP (sem TLS). --poll-interval 0 desativa a verificação em segundo plano para que você não precise de credenciais das plataformas.
A conexão com o banco de dados é lida da variável de ambiente DB_URL ou db_url em ~/.bbscope.yaml.
Todas as credenciais das plataformas são opcionais. Plataformas não configuradas são simplesmente ignoradas durante a verificação.
Defina OPENAI_API_KEY e opcionalmente OPENAI_MODEL (padrão gpt-4.1-mini) para ativar a normalização de alvos de escopo baseada em IA. Armazenado em cache por alvo para minimizar chamadas de API.
Para proteger o site com autenticação básica HTTP:
Gere um hash de senha:
docker run --rm caddy:2-alpine caddy hash-password --plaintext 'yourpassword'
Copie a configuração de exemplo para conf.d/:
cp basicauth.caddy.example conf.d/basicauth.caddy
Edite conf.d/basicauth.caddy e adicione seu nome de usuário e hash:
basic_auth {
myuser $2a$14$hashgoeshere...
}
Reinicie o Caddy: docker compose restart caddy
Para desativar, remova conf.d/basicauth.caddy e reinicie.
caddy (ports 80/443) → bbscope-web (:8080) → postgres
conf.d/*.caddy são importados automaticamente.O site expõe uma API pública:
Parâmetros de consulta: scope (in/out/both), platform, type, raw (pular IA), format (json/text).
A saída padrão é texto delimitado por nova linha; adicione format=json para JSON. As respostas são armazenadas em cache por 5 minutos.
| Flag | Padrão | Descrição |
|---|
--dev, -d | false | Modo de desenvolvimento (HTTP, sem TLS) |
--poll-interval | 6 | Horas entre ciclos de verificação (0 para desativar) |
--listen | :8080 | Endereço de escuta HTTP |
--domain | bbscope.com | Domínio para sitemap/robots.txt |
| Plataforma | Variáveis de ambiente | Observações |
|---|
| HackerOne | H1_USERNAME, H1_TOKEN | Token de API |
| Bugcrowd | BC_EMAIL, BC_PASSWORD, BC_OTP | Ou defina BC_PUBLIC_ONLY=1 para apenas programas públicos |
| Intigriti | IT_TOKEN | Token Bearer |
| YesWeHack | YWH_EMAIL, YWH_PASSWORD, YWH_OTP | Email + senha + OTP |
| Endpoint | Descrição |
|---|
GET /api/v1/programs | Listar todos os programas |
GET /api/v1/programs/{platform}/{handle} | Detalhe de um único programa |
GET /api/v1/targets/{type} | Alvos por tipo: wildcards, domains, urls, ips, cidrs |