
Python-Bibliothek und CLI für die Bug Bounty Recon API
Dieses Projekt wird nicht mehr weiterentwickelt und ich habe die Crawling-Infrastruktur offline genommen.
Die Zielgruppe war nicht groß genug, um die Wartung zu rechtfertigen.
Bug Bounty Recon (bbrecon) ist ein kostenloser Recon-as-a-Service für Bug-Bounty-Jäger und Sicherheitsforscher. Die API zielt darauf ab, eine kontinuierlich aktualisierte Karte der „Safe Harbor“-Angriffsfläche des Internets bereitzustellen, ausgenommen Out-of-Scope-Ziele.
Es wird mit einer ergonomischen CLI und einer Python-Bibliothek geliefert.
Obwohl wir uns bemühen, die von bbrecon zurückgegebenen Ergebnisse zuverlässig und vertrauenswürdig zu gestalten, sind dieser Dienst und seine Betreiber in keiner Weise für das verantwortlich, was Sie mit den bereitgestellten Daten tun.
Überprüfen Sie Ihre Scopes doppelt und stellen Sie sicher, dass Sie sich in Safe Harbors bewegen.
bbrecon befindet sich in einer schrittweisen Beta-Veröffentlichungsphase; alle paar Wochen werden größere Funktionen veröffentlicht, um Feedback zu erhalten und Fehler zu beheben. Sie können sich anmelden und es verwenden, aber beachten Sie, dass Änderungen mit Breaking-Charakter ohne Vorankündigung bereitgestellt werden können. Obwohl der Dienst und die Infrastruktur für Skalierbarkeit ausgelegt sind, ist er derzeit nicht darauf ausgelegt, ein großes globales Publikum zu bedienen. Dies könnte sich ändern, aber vorerst gilt: Ihre Erfahrung kann abweichen.
Bitte nutzen Sie die GitHub Issues für Fehler.
Holen Sie sich einen API-Schlüssel von der Konsole: https://console.bugbountyrecon.com
Derzeit wird nur Google SSO unterstützt.
$ pip3 install bbrecon
bbreconerfordert Python >= 3.8 – wennpipIhnen mitteilt, dass esbbreconnicht finden kann, liegt das wahrscheinlich daran, dasspipeine andere Python-Version verwendet. Überprüfen Sie dies mitpip3 --version.
Wenn Sie die CLI nutzen möchten, sollten Sie Ihren Schlüssel dauerhaft konfigurieren:
$ bbrecon configure key
Enter your API key: IHR_API_SCHLÜSSEL
Alternativ können Sie die Umgebungsvariable BBRECON_KEY setzen, wenn Sie das bevorzugen.
Der folgende Befehl gibt alle Programme aus, die im letzten Monat veröffentlicht wurden und Ziele vom Typ „web“ (APIs/Web-Apps) haben:
$ 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
...
Um Scopes für bestimmte Programme zu erhalten, verwenden Sie 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
Um Domains für bestimmte Programme zu erhalten, verwenden Sie 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
...
Um eine Slack- oder Discord-Webhook-Benachrichtigung zu erstellen, verwenden Sie create notifications:
bbrecon create notifications --resources programs --program ALL --webhook https://SLACK_OR_DISCORD_WEBHOOK_URL/
Sie können Ihre konfigurierten Benachrichtigungen mit get notifications anzeigen.
Die meisten Befehle können JSON ausgeben, um die Arbeit mit Ihren Skripten zu erleichtern. Versuchen Sie --output json:
$ bbrecon get programs --output json
[
{
"url": "https://bugcrowd.com/optimizely",
"name": "Optimizely",
"platform": "bugcrowd",
"rewards": [
"cash",
"fame"
],
...
Sie können Informationen zu bestimmten Programmen abrufen, indem Sie einen oder mehrere Slugs an den Befehl get programs übergeben:
$ 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
Verwenden Sie --help, um eine Liste der Filter für jeden Befehl zu erhalten:
$ 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).
...
Beachten Sie, dass einige Filter Listen sind und mehrfach verwendet werden können! Wenn Sie alle Programme abrufen möchten, die mobile Apps im Scope haben, könnten Sie Folgendes ausführen:
$ 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
...
Sie sind eingeladen, sich den Code dieses Repos anzusehen, um weitere Details zu erhalten, aber für den Einstieg:
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)
Sie können auch direkt mit der REST-API interagieren, wenn Sie dies bevorzugen. Sehen Sie sich die API-Dokumentation hier an.
Die folgenden Clients für die Bug Bounty Recon API werden von mir weder überprüft noch unterstützt, aber Sie könnten sie dennoch interessant finden. Vielen Dank an die Mitwirkenden!
Wenn Sie Ihren eigenen hier auflisten möchten, öffnen Sie einfach einen PR.