Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
s3tk — Un kit de sécurité pour Amazon S3 | Kitploit
Outils/GitHubGitHub/ankane/s3tk
Sécurité de l'Infrastructure CloudScanners de VulnérabilitésOutils de Chiffrement/DéchiffrementAudit de ConfigurationSécurité CloudMauvaise Configuration
GitHubankane/s3tk

s3tk

Un kit de sécurité pour Amazon S3

Voir le dépôt
45927il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

s3tk

Une boîte à outils de sécurité pour Amazon S3

Screenshot

🍊 Éprouvée sur le terrain chez Instacart

Installation

Exécutez :

root@kitploit:~
pip install s3tk

Vous pouvez utiliser AWS CLI ou AWS Vault pour configurer vos identifiants AWS :

root@kitploit:~
pip install awscli
aws configure

Consultez les politiques IAM nécessaires pour chaque commande.

Commandes

Scan

Analysez vos buckets pour :

  • ACL ouverte au public
  • politique ouverte au public
  • accès public bloqué
  • journalisation activée
  • versionnage activé
  • chiffrement par défaut activé
root@kitploit:~
s3tk scan

Exécuter uniquement sur des buckets spécifiques

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

Fonctionne également avec des wildcards

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

Confirmer le(s) bucket(s) de journalisation et le préfixe corrects

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

Vérifier la journalisation au niveau objet de CloudTrail [expérimental]

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

Ignorer la journalisation, le versionnage ou le chiffrement par défaut

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

Recevoir des notifications par email des échecs (via SNS)

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

List Policy

Lister les politiques des buckets

root@kitploit:~
s3tk list-policy

Exécuter uniquement sur des buckets spécifiques

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

Afficher les instructions nommées

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

Set Policy

Remarque : Ceci remplace la politique précédente

Uniquement les téléversements privés

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

Delete Policy

Supprimer la politique

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

Block Public Access

Bloquer l’accès public sur des buckets spécifiques

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

Utilisez l’option --dry-run pour tester

Enable Logging

Activer la journalisation sur tous les buckets

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

Uniquement sur des buckets spécifiques

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

Définir le préfixe de journalisation ({bucket}/ par défaut)

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

Utilisez l’option --dry-run pour tester

Quelques notes sur la journalisation :

  • les buckets avec journalisation déjà activée ne sont pas du tout mis à jour
  • le bucket de journalisation doit se trouver dans la même région que le bucket source – exécutez cette commande plusieurs fois pour différentes régions
  • il peut falloir plus d’une heure pour que les logs apparaissent

Enable Versioning

Activer le versionnage sur tous les buckets

root@kitploit:~
s3tk enable-versioning

Uniquement sur des buckets spécifiques

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

Utilisez l’option --dry-run pour tester

Enable Default Encryption

Activer le chiffrement par défaut sur tous les buckets

root@kitploit:~
s3tk enable-default-encryption

Uniquement sur des buckets spécifiques

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

Ceci ne chiffre pas les objets existants – utilisez la commande encrypt pour cela

Utilisez l’option --dry-run pour tester

Scan Object ACL

Analyser les ACL sur tous les objets d’un bucket

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

Uniquement certains objets

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

Sauf certains objets

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

Reset Object ACL

Réinitialiser les ACL sur tous les objets d’un bucket

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

Ceci rend tous les objets privés. Consultez les politiques de bucket pour savoir comment imposer cette règle à l’avenir.

Utilisez l’option --dry-run pour tester

Spécifiez certains objets de la même manière que scan-object-acl

Encrypt

Chiffrer tous les objets d’un bucket avec le chiffrement côté serveur

root@kitploit:~
s3tk encrypt mon-bucket

Utilisez les clés gérées par S3 par défaut. Pour les clés gérées par KMS, utilisez :

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

Pour les clés fournies par le client, utilisez :

root@kitploit:~
s3tk encrypt mon-bucket --customer-key clé-secrète

Utilisez l’option --dry-run pour tester

Spécifiez certains objets de la même manière que scan-object-acl

Remarque : Les objets perdront toute ACL personnalisée

Delete Unencrypted Versions

Supprimer toutes les versions non chiffrées des objets dans un bucket

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

Par sécurité, cela ne supprimera aucune version actuelle des objets

Utilisez l’option --dry-run pour tester

Spécifiez certains objets de la même manière que scan-object-acl

Scan DNS

Analyser Route 53 pour les buckets afin de vérifier que vous les possédez

root@kitploit:~
s3tk scan-dns

Sinon, vous pourriez être vulnérable à une prise de contrôle de sous-domaine

Identifiants

Les identifiants peuvent être spécifiés dans ~/.aws/credentials ou avec des variables d’environnement. Consultez ce guide pour une explication des variables d’environnement.

Vous pouvez spécifier un profil à utiliser avec :

root@kitploit:~
AWS_PROFILE=votre-profil s3tk

Politiques IAM

Voici les autorisations nécessaires pour chaque commande. Incluez uniquement les instructions dont vous avez besoin.

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:::mon-bucket",
                "arn:aws:s3:::mon-bucket/*"
            ]
        },
        {
            "Sid": "Encrypt",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::mon-bucket",
                "arn:aws:s3:::mon-bucket/*"
            ]
        },
        {
            "Sid": "DeleteUnencryptedVersions",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:GetObjectVersion",
                "s3:DeleteObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::mon-bucket",
                "arn:aws:s3:::mon-bucket/*"
            ]
        }
    ]
}

Journaux d’accès

Amazon Athena est excellent pour interroger les logs S3. Créez une table et interrogez-la :

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

Journaux CloudTrail

Amazon Athena est également excellent pour interroger les logs CloudTrail. Créez une table et interrogez-la :

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

Bonnes pratiques

Gardez les choses simples et suivez le principe du moindre privilège pour réduire les risques d’erreurs.

  • Limitez strictement qui peut effectuer des opérations liées aux buckets
  • Évitez de mélanger des objets avec différentes autorisations dans le même bucket (utilisez une politique de bucket pour imposer cela)
  • Ne spécifiez pas d’autorisations de lecture publiques au niveau du bucket (pas de GetObject dans la politique du bucket)
  • Surveillez fréquemment la configuration pour détecter les changements

Politiques de bucket

Uniquement les téléversements privés

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

Performances

Pour les commandes qui itèrent sur les objets du bucket (scan-object-acl, reset-object-acl, encrypt et delete-unencrypted-versions), exécutez s3tk sur un serveur EC2 pour une latence minimale.

Remarques

Les commandes set-policy, block-public-access, enable-logging, enable-versioning et enable-default-encryption sont fournies pour plus de commodité. Nous recommandons Terraform pour gérer vos buckets.

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

  logging {
    target_bucket = "mes-logs-s3"
    target_prefix = "mon-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
}

Mise à niveau

Exécutez :

root@kitploit:~
pip install s3tk --upgrade

Pour utiliser la branche master, exécutez :

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

Docker

Exécutez :

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

Validez vos identifiants :

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

Et exécutez :

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

Historique

Consultez le journal des modifications

Contribuer

Tout le monde est encouragé à aider à améliorer ce projet. Voici quelques façons de contribuer :

  • Signaler des bugs
  • Corriger des bugs et soumettre des pull requests
  • Écrire, clarifier ou corriger la documentation
  • Suggérer ou ajouter de nouvelles fonctionnalités

Pour commencer le développement :

root@kitploit:~
git clone https://github.com/ankane/s3tk.git
cd s3tk
pip install --group dev
Télécharger l’outil