
Библиотека Python и CLI для Bug Bounty Recon API
Этот проект больше не поддерживается, и я отключил инфраструктуру сканирования.
Аудитория оказалась недостаточно велика, чтобы оправдать её содержание.
Bug Bounty Recon (bbrecon) — это бесплатный сервис Recon-as-a-Service для охотников за багами и исследователей безопасности. API предоставляет постоянно обновляемую карту поверхности атак «безопасной гавани» (safe harbor) в интернете, исключая цели, выходящие за рамки программы.
Поставляется с удобным CLI и Python-библиотекой.
Несмотря на усилия по обеспечению надёжности и достоверности результатов, возвращаемых bbrecon, этот сервис и его операторы никоим образом не несут ответственности за то, что вы делаете с предоставленными данными.
Дважды проверьте свои рамки (scopes) и убедитесь, что остаётесь в безопасных гаванях.
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, если это удобнее.
Следующая команда выведет все программы, выпущенные за последний месяц, которые содержат цели типа «web» (API/веб-приложения):
$ 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, используйте 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"
],
...
Вы можете получить информацию о конкретных программах, передав один или несколько идентификаторов (slugs) команде 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
Используйте --help, чтобы получить список фильтров для каждой команды:
$ bbrecon get programs --help
...
Формат вывода. [по умолчанию: wide]
-n, --name TEXT Фильтр по имени.
-t, --type TEXT Фильтр по типу скоупа. Можно использовать
несколько раз.
-r, --reward TEXT Фильтр по типу вознаграждения. Можно использовать
несколько раз.
-p, --platform TEXT Фильтр по платформе. Можно использовать
несколько раз.
--exclude-platform TEXT Исключить определённую платформу. Игнорируется,
если передан --platform. Можно использовать
несколько раз.
-s, --since TEXT Фильтр по программам, созданным после определённой
даты. Можно указать конкретную дату в формате
'%Y-%m-%d'. Также поддерживаются следующие ключевые
слова: 'yesterday', 'last-week', 'last-month',
'last-year', а также 'last-X-days' (где 'X' — целое
число).
...
Обратите внимание, что некоторые фильтры являются списками и могут использоваться несколько раз! Если вы хотите получить все программы, в скоупе которых есть мобильные приложения, вы можете выполнить:
$ 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.