
Biblioteca de Python y CLI para la API de Bug Bounty Recon
Este proyecto ya no recibe mantenimiento y he desconectado la infraestructura de rastreo.
La audiencia no era lo suficientemente amplia como para justificar su mantenimiento.
Bug Bounty Recon (bbrecon) es un servicio gratuito de Reconocimiento como Servicio para cazadores de bugs y investigadores de seguridad. La API tiene como objetivo proporcionar un mapa continuamente actualizado de la superficie de ataque de "puerto seguro" de Internet, excluyendo objetivos fuera del alcance.
Viene con una CLI ergonómica y una biblioteca de Python.
Aunque se hace un esfuerzo para garantizar que los resultados devueltos por bbrecon sean fiables y dignos de confianza, este servicio y sus operadores no son de ninguna manera responsables de lo que usted haga con los datos proporcionados.
Verifique sus alcances dos veces y asegúrese de mantenerse dentro de los puertos seguros.
bbrecon se encuentra en una fase gradual de Beta; las funcionalidades principales se lanzan cada pocas semanas para obtener retroalimentación y corregir fallos. Puede registrarse y comenzar a usarlo, pero tenga en cuenta que se pueden implementar cambios importantes sin previo aviso. Aunque el servicio y la infraestructura están diseñados para escalar, actualmente no está configurado para atender a una gran audiencia global. Esto puede cambiar, pero por ahora su experiencia puede variar.
Por favor, use los issues de GitHub del proyecto.
Obtenga una clave API desde la Consola: https://console.bugbountyrecon.com
Por el momento solo se admite Google SSO.
$ pip3 install bbrecon
bbreconrequiere Python >= 3.8 – sipiple indica que no puede encontrarbbreconprobablemente se deba a quepipestá usando otra versión de Python. Verifique esto conpip3 --version.
Si tiene intención de usar la CLI, debería configurar su clave de forma permanente:
$ bbrecon configure key
Enter your API key: YOUR_API_KEY
Alternativamente, puede definir la variable de entorno BBRECON_KEY si lo prefiere.
Lo siguiente mostrará todos los programas lanzados en el último mes que tienen objetivos de tipo "web" (API/aplicaciones 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 obtener los alcances 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 obtener los dominios 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 crear notificaciones vía webhook de Slack o Discord use create notifications:
bbrecon create notifications --resources programs --program ALL --webhook https://SLACK_OR_DISCORD_WEBHOOK_URL/
Puede ver las notificaciones configuradas con get notifications.
La mayoría de los comandos pueden generar JSON para facilitar el trabajo con sus scripts. Pruebe --output json:
$ bbrecon get programs --output json
[
{
"url": "https://bugcrowd.com/optimizely",
"name": "Optimizely",
"platform": "bugcrowd",
"rewards": [
"cash",
"fame"
],
...
Puede obtener información sobre programas específicos pasando uno o varios slugs al 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 obtener una 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).
...
Tenga en cuenta que algunos filtros son listas y se pueden usar varias veces. Si quisiera obtener todos los programas que tienen aplicaciones móviles dentro del alcance, podría ejecutar:
$ 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
...
Le invitamos a explorar el código de este repositorio para más detalles, pero para empezar:
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)
Puede interactuar directamente con la API REST si lo prefiere. Consulte la documentación de la API aquí.
Los siguientes clientes para la API de Bug Bounty Recon no son revisados ni respaldados por mí, pero puede que le resulten interesantes de todos modos. Muchas gracias a los colaboradores.
Si desea que el suyo aparezca aquí, simplemente abra un PR.