**本项目已不再维护,我已将抓取基础设施下线。**
**受众群体不够大,不足以证明维护它的必要性。**
Bug Bounty Recon (`bbrecon`) 是一款面向 Bug Bounty 猎人和安全研究人员的免费 Recon-as-a-Service。该 API 旨在提供一份持续更新的互联网“安全港”攻击面地图,并排除了不在范围内的目标。
它附带了一个符合人体工程学的 CLI 和 Python 库。
## 重要提示
尽管我们已尽力确保 `bbrecon` 返回的结果可靠且值得信赖,但本服务及其运营者对您如何使用所提供的数据概不负责。
请仔细检查您的目标范围,并确保您始终在安全港范围内操作。
## 功能
- **公开项目** - 已收录的公开 Bug Bounty 项目,支持通过过滤器进行搜索
- **域名** - 各个项目中包含的目标域名
- **通知** - 在创建项目或发现域名时通过 webhook 发送警报
## 状态
`bbrecon` 目前正处于渐进的 **Beta** 发布阶段;每隔几周就会发布主要功能,以获取反馈并修复问题。您可以注册并开始使用它,但请注意,**可能会在未经通知的情况下部署破坏性更新**。虽然该服务和基础设施在设计上具备可扩展性,但**目前并未配置为服务全球大量受众**。这在未来可能会有所改变,但目前您的实际体验可能会有所不同 (YMMV)。
## 入门指南
### API key
从控制台获取 API key:https://console.bugbountyrecon.com
目前仅支持 Google SSO。
### 安装
```
$ pip3 install bbrecon
```
如果您打算使用 CLI,您应该永久配置您的 key:
```
$ bbrecon configure key
Enter your API key: YOUR_API_KEY
```
如果您愿意,也可以选择设置 `BBRECON_KEY` 环境变量。
## CLI
以下命令将输出过去一个月内发布的所有包含 "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` 命令传递一个或多个 slug 来获取特定项目的信息:
```
$ 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
...
```
## Python
欢迎查看本仓库的代码库以获取更多详细信息,以下是快速入门指南:
```
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
如果您愿意,可以直接与 REST API 进行交互。在[这里](https://docs.bugbountyrecon.com/index.html)查看 API 文档。
## 其他客户端
以下用于 Bug Bounty Recon API 的客户端未经我个人审查或认可,但您仍然可能会对它们感兴趣。非常感谢这些贡献者!
如果您想将自己的项目列在这里,只需提交一个 PR 即可。
* [bbrecon_mobile_client](https://github.com/ponnamkarthik/bbrecon_mobile_client),作者 [ponnamkarthik](https://github.com/ponnamkarthik)