
Biblioteca Python e CLI para a Bug Bounty Recon API
Este projeto não é mais mantido e eu desativei a infraestrutura de crawling.
O público não era grande o suficiente para justificar sua manutenção.
Bug Bounty Recon (bbrecon) é um Recon-as-a-Service gratuito para caçadores de recompensas de bugs e pesquisadores de segurança. A API visa fornecer um mapa continuamente atualizado da superfície de ataque da Internet em "porto seguro", excluindo alvos fora do escopo.
Ele vem com uma CLI ergonômica e uma biblioteca Python.
Embora esforços sejam feitos para garantir que os resultados retornados pelo bbrecon sejam confiáveis e dignos de confiança, este serviço e seus operadores não são de forma alguma responsáveis pelo que você fizer com os dados fornecidos.
Verifique seus escopos e certifique-se de permanecer dentro dos portos seguros.
O bbrecon está em uma fase de Beta gradual; grandes recursos são lançados a cada poucas semanas para obter feedback e corrigir problemas. Você pode se inscrever e começar a usá-lo, mas esteja ciente de que mudanças que quebram podem ser implantadas sem aviso prévio. Embora o serviço e a infraestrutura sejam projetados para escalar, atualmente não estão configurados para atender a uma grande audiência global. Isso pode mudar, mas por enquanto, YMMV.
Por favor, use os issues do GitHub para relatar bugs.
Obtenha uma chave da API no Console: https://console.bugbountyrecon.com
Apenas o SSO do Google é suportado no momento.
$ pip3 install bbrecon
O
bbreconrequer Python >= 3.8 - se opipinformar que não pode encontrar obbrecon, provavelmente é porque opipestá usando outra versão do Python. Verifique isso compip3 --version.
Se você pretende usar a CLI, deve configurar sua chave permanentemente:
$ bbrecon configure key
Enter your API key: YOUR_API_KEY
Você também pode definir a variável de ambiente BBRECON_KEY se preferir.
O seguinte comando listará todos os programas lançados no último mês que possuem alvos do tipo "web" (APIs/aplicativos web):
$ bbrecon get programs --type web --since last-month
SLUG PLATFORM CREATED REWARDS MIN.BOUNTY AVG.BOUNTY MAX.BOUNTY SCOPES TYPES
cybrary bugcrowd 2020-07-22 fame $0 $0 $0 6 android,ios,web
expressvpn bugcrowd 2020-07-14 cash,fame $150 $1047 $2500 17 android,ios,other,web
prestashop yeswehack 2020-07-23 cash $0 $0 $1000 1 web
...
Para obter escopos de programas específicos, use get scopes:
$ bbrecon get scopes rockset codefi-bbp
SLUG PLATFORM TYPE VALUE
rockset hackerone web console.rockset.com
rockset hackerone web docs.rockset.com
rockset hackerone web api.rs2.usw2.rockset.com
codefi-bbp hackerone web activate.codefi.network
Para obter domínios de programas específicos, use get domains:
$ bbrecon get domains dropcontact rebellion-defense
SLUG DOMAIN CREATED
dropcontact www.dropcontact.io 2020-08-23
rebellion-defense mooch.rip 2020-08-23
rebellion-defense www.rebelliondefense.com 2020-08-23
rebellion-defense rebelliondefense.com 2020-08-23
...
Para criar notificações de webhook do Slack ou Discord, use create notifications:
bbrecon create notifications --resources programs --program ALL --webhook https://SLACK_OR_DISCORD_WEBHOOK_URL/
Você pode visualizar suas notificações configuradas com get notifications.
A maioria dos comandos pode gerar saída JSON para facilitar o trabalho com seus scripts. Tente --output json:
$ bbrecon get programs --output json
[
{
"url": "https://bugcrowd.com/optimizely",
"name": "Optimizely",
"platform": "bugcrowd",
"rewards": [
"cash",
"fame"
],
...
Você pode obter informações sobre programas específicos passando um ou vários slugs para o comando get programs:
$ bbrecon get programs twago optimizely
SLUG PLATFORM CREATED REWARDS MIN.BOUNTY AVG.BOUNTY MAX.BOUNTY SCOPES TYPES
twago intigriti 2020-04-09 $0 $0 $0 5 web
optimizely bugcrowd 2018-03-22 cash,fame $0 $750 $5000 6 web
Use --help para obter uma lista de filtros para cada comando:
$ bbrecon get programs --help
...
Output format. [default: wide]
-n, --name TEXT Filter by name.
-t, --type TEXT Filter by scope type. Can be used multiple
times.
-r, --reward TEXT Filter by reward type. Can be used multiple
times.
-p, --platform TEXT Filter by platform. Can be used multiple
times.
--exclude-platform TEXT Exclude specific platform. Ignored if
--platform was passed. Can be used multiple
times.
-s, --since TEXT Filter by bounties created after a certain
date. A specific date in the format
'%Y-%m-%d' can be supplied. Alternatively,
the following keywords are supported:
'yesterday', 'last-week', 'last-month',
'last-year' as well as 'last-X-days' (where
'X' is an integer).
...
Observe que alguns filtros são listas e podem ser usados várias vezes! Se você quisesse obter todos os programas que possuem aplicativos móveis no escopo, poderia executar:
$ bbrecon get programs --type android --type ios
SLUG PLATFORM CREATED REWARDS MIN.BOUNTY AVG.BOUNTY MAX.BOUNTY SCOPES TYPES
square bugcrowd 2018-03-22 cash,fame $300 $492 $5000 4 android,ios,other,web
gojek bugcrowd 2018-03-22 cash,fame $200 $618 $5000 4 android,ios,web
smartthings bugcrowd 2018-03-22 fame $0 $0 $0 5 android,hardware,ios,web
...
Convidamos você a explorar o código-fonte deste repositório para mais detalhes, mas para começar:
from bbrecon import BugBountyRecon
bb = BugBountyRecon(token="API_KEY")
programs = bb.programs(
types=["web", "ios"],
platforms=["hackerone"],
rewards=["cash"],
)
for program in programs:
print(f"{program.name} rewards up to ${program.maximum_bounty}!")
print(f"More information is available at: {program.url}")
for scope in program.in_scope:
if scope.type == "desktop":
print("Found a desktop app in scope for this program. Cool!")
domains = list(bb.domains(programs=[program.slug]))
print("Here are some domains for this program:")
for domain in domains[:3]:
print(domain.name)
Você pode interagir diretamente com a API REST se preferir. Consulte a documentação da API aqui.
Os seguintes clientes para a API Bug Bounty Recon não são revisados ou endossados por mim, mas você pode achá-los interessantes mesmo assim. Muito obrigado aos contribuidores!
Se você quiser que o seu seja listado aqui, basta abrir um PR.