Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
bucky — Инструмент для перебора идентификаторов учетных записей S3 и обнаружения корзин | Kitploit
Инструменты/GitHubGitHub/umair9747/bucky
OSINT (Разведка открытых источников)РазведкаАнализ уязвимостейСбор информацииТестирование на ПроникновениеБезопасность облачных сред
GitHubumair9747/bucky

bucky

Инструмент для перебора идентификаторов учетных записей S3 и обнаружения корзин

Репозиторий
21146 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Bucky

Инструмент для перечисления идентификаторов аккаунтов S3 и обнаружения бакетов




Имея один доступный бакет S3, Bucky извлекает 12-значный идентификатор аккаунта AWS, которому он принадлежит, а затем обнаруживает дополнительные бакеты того же аккаунта путем фаззинга имен бакетов по словарю — всё одной командой.

Что он делает

  1. Перечисляет идентификатор аккаунта — использует ключ условия s3:ResourceAccount IAM для подбора 12-значного идентификатора аккаунта AWS по одной цифре за раз через встроенные политики сессий STS
  2. Обнаруживает больше бакетов — фаззит имена бакетов из словаря, чтобы найти дополнительные бакеты, принадлежащие тому же аккаунту, используя конкурентные воркеры
  3. Сообщает всё — идентификатор аккаунта, регион бакета и все обнаруженные бакеты

Почему это важно

Имена бакетов S3 изначально использовали единое глобальное пространство имен, что породило bucketsquatting (захват имен бакетов) — злоумышленники могли "сидеть" на именах, которые организации планировали создать. AWS решила эту проблему, внедрив аккаунтно-региональное пространство имен — схему именования, привязывающую каждый бакет к его владельцу-аккаунту и региону:

{имя}-{accountID}-{region}-an

Бакет с именем myapp-123456789123-eu-north-1-an будет доступен по адресу https://myapp-123456789123-eu-north-1-an.s3.eu-north-1.amazonaws.com. AWS теперь рекомендует этот формат для новых бакетов, хотя он пока не является стандартным. (Подробнее о том, как новое пространство имен устраняет bucketsquatting, читайте в статье One Cloud Please.)

Обратная сторона в том, что идентификатор аккаунта и регион теперь встроены в само имя бакета. Как только злоумышленник получает идентификатор аккаунта цели, он может объединить его со словарём и систематически формировать валидные URL бакетов — а S3 подтвердит наличие каждого из них, даже если бакет приватный. Сам факт ответа — уже полезная разведка.

Bucky использует именно это. Основываясь на исследовании от Pwned Labs, он сначала восстанавливает 12-значный идентификатор аккаунта из доступного бакета с помощью техники s3-account-search, а затем перебирает шаблон {name}-{accountID}-{region}-an, чтобы раскрыть более широкий S3-след цели.

Как работает техника

  1. Вы создаете роль IAM в своём аккаунте AWS, у которой есть права s3:ListBucket или s3:GetObject на целевой бакет
  2. Вы вызываете sts:AssumeRole для этой роли, передавая встроенную политику сессии с условием s3:ResourceAccount, например "1*"
  3. Если аккаунт-владелец целевого бакета начинается с 1, вызов HeadBucket проходит успешно; в противном случае возвращается 403
  4. Повторите для каждой позиции цифры (0–9), пока не будут найдены все 12 цифр
  5. Встроенная политика сессии действует как граница разрешений — она пересекается с разрешениями роли, поэтому доступ предоставляется только при совпадении условия

Для этого требуется не более 120 вызовов API (12 позиций × 10 цифр), и обычно всё выполняется менее чем за минуту.

Установка

С помощью go install

go install github.com/umair9747/bucky@latest

Из исходников

git clone https://github.com/umair9747/bucky.git
cd bucky
go build -o bucky .
sudo mv bucky /usr/local/bin/

Обновление

bucky --update

Эта команда загружает и устанавливает последнюю версию из репозитория.

Предварительные требования: настройка роли IAM

Перед использованием bucky вам потребуется роль IAM в вашем аккаунте AWS, которая имеет доступ к целевому бакету S3. Целевой бакет должен быть общедоступным или иметь политику бакета, разрешающую доступ из вашего аккаунта.

Шаг 1: Создайте политику доверия

Создайте trust-policy.json — она разрешает вашему пользователю IAM принимать роль:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Замените <YOUR_ACCOUNT_ID> на ваш 12-значный идентификатор аккаунта AWS. Вы можете ограничить действие определенным пользователем или ролью IAM вместо :root.

Шаг 2: Создайте политику разрешений

Создайте s3-policy.json — роли нужен широкий доступ на чтение S3 (условие s3:ResourceAccount во встроенной политике сессии bucky обрабатывает фильтрацию на уровне аккаунта):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": "*"
    }
  ]
}

Шаг 3: Создайте роль

aws iam create-role \
  --role-name bucky-role \
  --assume-role-policy-document file://trust-policy.json

aws iam put-role-policy \
  --role-name bucky-role \
  --policy-name S3ReadAccess \
  --policy-document file://s3-policy.json

Шаг 4: Получите ARN роли

aws iam get-role --role-name bucky-role --query 'Role.Arn' --output text
# Вывод: arn:aws:iam::123456789012:role/bucky-role

Шаг 5: Убедитесь, что есть разрешение AssumeRole

Если ваш пользователь IAM ещё не имеет разрешения sts:AssumeRole, добавьте его:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::<YOUR_ACCOUNT_ID>:role/bucky-role"
    }
  ]
}

Использование

Полный рабочий процесс (по умолчанию)

Основной способ использования bucky — перечислить идентификатор аккаунта из известного бакета, затем одним заходом произвести фаззинг для поиска дополнительных бакетов:

bucky \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket target-bucket \
  --wordlist wordlists/default.txt \
  --access-key AKIA... \
  --secret-key wJal...

С известным ключом объекта (повышает надёжность):

bucky \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket s3://target-bucket/index.html \
  --wordlist wordlists/default.txt \
  --workers 20

Несколько бакетов (через запятую):

bucky \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket bucket1,bucket2,bucket3 \
  --wordlist wordlists/default.txt

Несколько бакетов из файла:

bucky \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket-file targets.txt \
  --wordlist wordlists/default.txt

Сохранение результатов в JSON:

bucky --bucket target-bucket --wordlist wordlists/default.txt --json
bucky --bucket target-bucket --wordlist wordlists/default.txt --json --output results.json

Вывод:

=== Phase 1: Account ID Enumeration ===
[*] Verifying access to bucket: target-bucket
[+] Access confirmed
[+] Bucket region: us-west-2
[*] Enumerating account ID...
  [██████████████████████████████] 12/12 | 675351422352

[+] Account ID: 675351422352

=== Phase 2: Bucket Discovery ===
[*] Fuzzing buckets for account: 675351422352
[*] Loaded 312 candidates from wordlist
[+] FOUND: target-backups
[+] FOUND: target-logs
  [██████████████████████████████] 312/312 | 2 found

=== Summary ===
Account ID : 675351422352
Source     : target-bucket
Region     : us-west-2
Discovered : 2 additional bucket(s)
             - target-backups
             - target-logs

Только перечисление

Если вам нужен только идентификатор аккаунта:

bucky enum \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket target-bucket

Несколько бакетов и вывод JSON также работают с подкомандами:

Скачать инструмент