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

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

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

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

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

Категории

Все категории
Loading categories
s3tk — Набор инструментов безопасности для Amazon S3 | Kitploit
Инструменты/GitHubGitHub/ankane/s3tk
Безопасность облачной инфраструктурыСканеры уязвимостейИнструменты шифрования/дешифрованияАудит конфигурацииБезопасность облачных средНеправильная Конфигурация
GitHubankane/s3tk

s3tk

Набор инструментов безопасности для Amazon S3

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

Популярное

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

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

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

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

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

s3tk

Набор инструментов безопасности для Amazon S3

Скриншот

🍊 Проверено в бою в Instacart

Установка

Выполните:

root@kitploit:~
pip install s3tk

Вы можете использовать AWS CLI или AWS Vault для настройки своих учётных данных AWS:

root@kitploit:~
pip install awscli
aws configure

См. политики IAM, необходимые для каждой команды.

Команды

Scan

Сканируйте свои корзины на предмет:

  • ACL открыт для всех
  • политика открыта для всех
  • публичный доступ заблокирован
  • ведение журнала включено
  • версионирование включено
  • шифрование по умолчанию включено
root@kitploit:~
s3tk scan

Запуск только для определённых корзин

root@kitploit:~
s3tk scan my-bucket my-bucket-2

Также работает с подстановочными знаками

root@kitploit:~
s3tk scan "my-bucket*"

Подтвердите правильную корзину(ы) журнала и префикс

root@kitploit:~
s3tk scan --log-bucket my-s3-logs --log-bucket other-region-logs --log-prefix "{bucket}/"

Проверка ведения журнала на уровне объектов CloudTrail [экспериментально]

root@kitploit:~
s3tk scan --object-level-logging

Пропустить ведение журнала, версионирование или шифрование по умолчанию

root@kitploit:~
s3tk scan --skip-logging --skip-versioning --skip-default-encryption

Получать уведомления по электронной почте о сбоях (через SNS)

root@kitploit:~
s3tk scan --sns-topic arn:aws:sns:...

List Policy

Вывести политики корзин

root@kitploit:~
s3tk list-policy

Только для определённых корзин

root@kitploit:~
s3tk list-policy my-bucket my-bucket-2

Показать именованные утверждения

root@kitploit:~
s3tk list-policy --named

Set Policy

Примечание: Это заменяет предыдущую политику

Только частные загрузки

root@kitploit:~
s3tk set-policy my-bucket --no-object-acl

Delete Policy

Удалить политику

root@kitploit:~
s3tk delete-policy my-bucket

Block Public Access

Заблокировать публичный доступ на определённых корзинах

root@kitploit:~
s3tk block-public-access my-bucket my-bucket-2

Используйте флаг --dry-run для проверки

Enable Logging

Включить ведение журнала на всех корзинах

root@kitploit:~
s3tk enable-logging --log-bucket my-s3-logs

Только на определённых корзинах

root@kitploit:~
s3tk enable-logging my-bucket my-bucket-2 --log-bucket my-s3-logs

Установить префикс журнала (по умолчанию {bucket}/)

root@kitploit:~
s3tk enable-logging --log-bucket my-s3-logs --log-prefix "logs/{bucket}/"

Используйте флаг --dry-run для проверки

Несколько замечаний о ведении журнала:

  • корзины, в которых ведение журнала уже включено, не обновляются
  • корзина журнала должна находиться в том же регионе, что и исходная корзина — запустите эту команду несколько раз для разных регионов
  • может потребоваться более часа, чтобы журналы появились

Enable Versioning

Включить версионирование на всех корзинах

root@kitploit:~
s3tk enable-versioning

Только на определённых корзинах

root@kitploit:~
s3tk enable-versioning my-bucket my-bucket-2

Используйте флаг --dry-run для проверки

Enable Default Encryption

Включить шифрование по умолчанию на всех корзинах

root@kitploit:~
s3tk enable-default-encryption

Только на определённых корзинах

root@kitploit:~
s3tk enable-default-encryption my-bucket my-bucket-2

Это не шифрует существующие объекты — используйте для этого команду encrypt

Используйте флаг --dry-run для проверки

Scan Object ACL

Сканировать ACL всех объектов в корзине

root@kitploit:~
s3tk scan-object-acl my-bucket

Только определённые объекты

root@kitploit:~
s3tk scan-object-acl my-bucket --only "*.pdf"

Кроме определённых объектов

root@kitploit:~
s3tk scan-object-acl my-bucket --except "*.jpg"

Reset Object ACL

Сбросить ACL всех объектов в корзине

root@kitploit:~
s3tk reset-object-acl my-bucket

Это делает все объекты приватными. См. политики корзин о том, как применять это в дальнейшем.

Используйте флаг --dry-run для проверки

Укажите определённые объекты так же, как в scan-object-acl

Encrypt

Зашифровать все объекты в корзине с помощью серверного шифрования

root@kitploit:~
s3tk encrypt my-bucket

По умолчанию используются ключи, управляемые S3. Для ключей, управляемых KMS, используйте:

root@kitploit:~
s3tk encrypt my-bucket --kms-key-id arn:aws:kms:...

Для ключей, предоставленных клиентом, используйте:

root@kitploit:~
s3tk encrypt my-bucket --customer-key secret-key

Используйте флаг --dry-run для проверки

Укажите определённые объекты так же, как в scan-object-acl

Примечание: Объекты потеряют любой пользовательский ACL

Delete Unencrypted Versions

Удалить все незашифрованные версии объектов в корзине

root@kitploit:~
s3tk delete-unencrypted-versions my-bucket

В целях безопасности это не удалит текущие версии объектов

Используйте флаг --dry-run для проверки

Укажите определённые объекты так же, как в scan-object-acl

Scan DNS

Сканировать Route 3 на наличие корзин, чтобы убедиться, что вы владеете ими

root@kitploit:~
s3tk scan-dns

В противном случае вы можете быть подвержены захвату поддомена

Учётные данные

Учётные данные можно указать в ~/.aws/credentials или с помощью переменных окружения. См. это руководство для объяснения переменных окружения.

Вы можете указать профиль для использования с помощью:

root@kitploit:~
AWS_PROFILE=your-profile s3tk

Политики IAM

Ниже приведены необходимые разрешения для каждой команды. Включайте только те утверждения, которые вам нужны.

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Scan",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketLogging",
                "s3:GetBucketVersioning",
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ScanObjectLevelLogging",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:ListTrails",
                "cloudtrail:GetTrail",
                "cloudtrail:GetEventSelectors",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ScanDNS",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "route53:ListHostedZones",
                "route53:ListResourceRecordSets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ListPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SetPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:PutBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DeletePolicy",
            "Effect": "Allow",
            "Action": [
                "s3:DeleteBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "BlockPublicAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketPublicAccessBlock"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableLogging",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketLogging"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableVersioning",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketVersioning"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableDefaultEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutEncryptionConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ResetObjectAcl",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObjectAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Sid": "Encrypt",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Sid": "DeleteUnencryptedVersions",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:GetObjectVersion",
                "s3:DeleteObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

Журналы доступа

Amazon Athena отлично подходит для запросов к журналам S3. Создайте таблицу и выполняйте запросы:

root@kitploit:~
SELECT
    parse_datetime(requestdatetime, 'dd/MMM/yyyy:HH:mm:ss Z') AS time,
    key,
    remoteip,
    useragent
FROM
    s3_access_logs_db.mybucket_logs
WHERE
    requester = '-'
    AND httpstatus LIKE '2%'
    AND key LIKE 'some-keys%'
ORDER BY 1

Журналы CloudTrail

Amazon Athena также отлично подходит для запросов к журналам CloudTrail. Создайте таблицу и выполняйте запросы:

root@kitploit:~
SELECT
    eventtime,
    eventname,
    useridentity.username,
    requestparameters
FROM
    cloudtrail_logs
WHERE
    eventname LIKE '%Bucket%'
ORDER BY 1

Лучшие практики

Держите всё просто и следуйте принципу наименьших привилегий, чтобы снизить вероятность ошибок.

  • Строго ограничьте круг лиц, которые могут выполнять операции, связанные с корзинами
  • Избегайте смешивания объектов с разными разрешениями в одной корзине (используйте политику корзины для обеспечения этого)
  • Не указывайте разрешения на публичное чтение на уровне корзины (без GetObject в политике корзины)
  • Регулярно проверяйте конфигурацию на предмет изменений

Политики корзин

Только частные загрузки

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObjectAcl",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

Производительность

Для команд, которые перебирают объекты корзины (scan-object-acl, reset-object-acl, encrypt и delete-unencrypted-versions), запускайте s3tk на сервере EC2 для минимальной задержки.

Примечания

Команды set-policy, block-public-access, enable-logging, enable-versioning и enable-default-encryption предоставлены для удобства. Мы рекомендуем Terraform для управления вашими корзинами.

root@kitploit:~
resource "aws_s3_bucket" "my_bucket" {
  bucket = "my-bucket"
  acl    = "private"

  logging {
    target_bucket = "my-s3-logs"
    target_prefix = "my-bucket/"
  }

  versioning {
    enabled = true
  }
}

resource "aws_s3_bucket_public_access_block" "my_bucket" {
  bucket = "${aws_s3_bucket.my_bucket.id}"

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

Обновление

Выполните:

root@kitploit:~
pip install s3tk --upgrade

Чтобы использовать master, выполните:

root@kitploit:~
pip install git+https://github.com/ankane/s3tk.git --upgrade

Docker

Запустите:

root@kitploit:~
docker run -it ankane/s3tk aws configure

Зафиксируйте свои учётные данные:

root@kitploit:~
docker commit $(docker ps -l -q) my-s3tk

И запустите:

root@kitploit:~
docker run -it my-s3tk s3tk scan

История

Посмотреть список изменений

Участие

Всех призывают помочь улучшить этот проект. Вот несколько способов, как вы можете помочь:

  • Сообщать об ошибках
  • Исправлять ошибки и отправлять pull request
  • Писать, уточнять или исправлять документацию
  • Предлагать или добавлять новые функции

Чтобы начать разработку:

root@kitploit:~
git clone https://github.com/ankane/s3tk.git
cd s3tk
pip install --group dev
Скачать инструмент