
Bug Bounty Recon API用のPythonライブラリおよびCLI
このプロジェクトはメンテナンスを終了し、クローリングインフラストラクチャはオフラインになりました。
利用者が十分に多くなかったため、維持する正当性がありませんでした。
Bug Bounty Recon (bbrecon) は、バグ報奨金ハンターやセキュリティ研究者向けの無料の Recon-as-a-Service です。このAPIは、スコープ外のターゲットを除外した、インターネットの「安全なハーバー」攻撃対象領域の継続的に更新されるマップを提供することを目的としています。
人間工学に基づいたCLIとPythonライブラリが付属しています。
bbrecon が返す結果の信頼性と正確性を確保するよう努力していますが、このサービスとその運営者は、提供されたデータを使ってあなたが何をするかについて一切責任を負いません。
スコープを再確認し、安全なハーバー内に留まるようにしてください。
bbrecon は段階的なベータリリース段階にあります。主要機能は数週間ごとにリリースされ、フィードバックを得て問題を修正しています。サインアップして使用を開始できますが、互換性を破る変更が予告なくデプロイされる可能性があることに注意してください。サービスとインフラストラクチャはスケーリングを考慮して設計されていますが、現在は大規模なグローバルユーザーに対応するよう構成されていません。これは将来変更される可能性がありますが、現時点では結果は保証できません。
GitHub Issues をご利用ください。
コンソールからAPIキーを取得してください: https://console.bugbountyrecon.com
現時点では Google SSO のみ対応しています。
$ pip3 install bbrecon
bbreconには Python >= 3.8 が必要です。pipがbbreconを見つけられないと言われた場合、pipが別のPythonバージョンを使用している可能性があります。pip3 --versionで確認してください。
CLIを使用する場合は、キーを永続的に設定する必要があります:
$ bbrecon configure key
Enter your API key: YOUR_API_KEY
代わりに環境変数 BBRECON_KEY を設定することもできます。
以下は、過去1ヶ月以内にリリースされ、「web」タイプのターゲット(API/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
...
特定のプログラムのスコープを取得するには、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
特定のプログラムのドメインを取得するには、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
...
Slack または Discord のWebhook通知を作成するには、create notifications を使用します:
bbrecon create notifications --resources programs --program ALL --webhook https://SLACK_OR_DISCORD_WEBHOOK_URL/
設定済みの通知は get notifications で確認できます。
ほとんどのコマンドはJSON出力が可能で、スクリプトとの連携が容易です。--output json を試してください:
$ bbrecon get programs --output json
[
{
"url": "https://bugcrowd.com/optimizely",
"name": "Optimizely",
"platform": "bugcrowd",
"rewards": [
"cash",
"fame"
],
...
get programs コマンドに1つまたは複数のスラッグを渡すことで、特定のプログラムの情報を取得できます:
$ 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
各コマンドのフィルタ一覧は --help で確認してください:
$ 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).
...
一部のフィルタはリスト形式で、複数回使用できることに注意してください!モバイルアプリがスコープ内にあるすべてのプログラムを取得したい場合は、次のように実行できます:
$ 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
...
詳細については、このリポジトリのコードベースを参照してください。ただし、開始するには以下の手順に従ってください:
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)
必要であれば、REST API を直接利用することもできます。APIドキュメントはこちらをご確認ください。
Bug Bounty Recon API 向けの以下のクライアントは、私自身によるレビューや推奨はされていませんが、興味深いかもしれません。協力してくださった皆様に感謝します!
ここに自分のクライアントを掲載したい場合は、PRを開いてください。