Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
s3tk — Un toolkit di sicurezza per Amazon S3 | Kitploit
Strumenti/GitHubGitHub/ankane/s3tk
Sicurezza dell'Infrastruttura CloudScanner di VulnerabilitàStrumenti di Crittografia/DecrittografiaAudit di ConfigurazioneSicurezza CloudConfigurazione Errata
GitHubankane/s3tk

s3tk

Un toolkit di sicurezza per Amazon S3

Vedi Repository
459271 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

s3tk

Un toolkit di sicurezza per Amazon S3

Screenshot

🍊 Testato sul campo presso Instacart

Installazione

Esegui:

root@kitploit:~
pip install s3tk

Puoi usare AWS CLI o AWS Vault per configurare le tue credenziali AWS:

root@kitploit:~
pip install awscli
aws configure

Vedi le politiche IAM necessarie per ogni comando.

Comandi

Scansione

Scansiona i tuoi bucket per:

  • ACL aperta al pubblico
  • policy aperta al pubblico
  • accesso pubblico bloccato
  • logging abilitato
  • versioning abilitato
  • crittografia predefinita abilitata
root@kitploit:~
s3tk scan

Esegui solo su bucket specifici

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

Funziona anche con wildcard

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

Conferma il/i bucket di log e il prefisso corretti

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

Controlla il logging a livello di oggetto di CloudTrail [sperimentale]

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

Salta logging, versioning o crittografia predefinita

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

Ricevi notifiche email degli errori (tramite SNS)

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

Elenca Policy

Elenca le policy dei bucket

root@kitploit:~
s3tk list-policy

Esegui solo su bucket specifici

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

Mostra le dichiarazioni con nome

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

Imposta Policy

Nota: Questo sostituisce la policy precedente

Solo caricamenti privati

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

Elimina Policy

Elimina policy

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

Blocca Accesso Pubblico

Blocca l'accesso pubblico su bucket specifici

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

Usa il flag --dry-run per testare

Abilita Logging

Abilita il logging su tutti i bucket

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

Solo su bucket specifici

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

Imposta il prefisso dei log ({bucket}/ di default)

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

Usa il flag --dry-run per testare

Alcune note sul logging:

  • i bucket con logging già abilitato non vengono aggiornati
  • il bucket di log deve essere nella stessa regione del bucket sorgente - esegui questo comando più volte per regioni diverse
  • possono volerci più di un'ora prima che i log vengano visualizzati

Abilita Versioning

Abilita il versioning su tutti i bucket

root@kitploit:~
s3tk enable-versioning

Solo su bucket specifici

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

Usa il flag --dry-run per testare

Abilita Crittografia Predefinita

Abilita la crittografia predefinita su tutti i bucket

root@kitploit:~
s3tk enable-default-encryption

Solo su bucket specifici

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

Questo non crittografa gli oggetti esistenti - usa il comando encrypt per questo

Usa il flag --dry-run per testare

Scansiona ACL Oggetti

Scansiona ACL su tutti gli oggetti in un bucket

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

Solo alcuni oggetti

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

Eccetto alcuni oggetti

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

Reimposta ACL Oggetti

Reimposta ACL su tutti gli oggetti in un bucket

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

Questo rende privati tutti gli oggetti. Vedi le policy dei bucket per come imporlo in futuro.

Usa il flag --dry-run per testare

Specifica alcuni oggetti nello stesso modo di scan-object-acl

Crittografa

Crittografa tutti gli oggetti in un bucket con la crittografia lato server

root@kitploit:~
s3tk encrypt my-bucket

Usa chiavi gestite da S3 di default. Per chiavi gestite da KMS, usa:

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

Per chiavi fornite dal cliente, usa:

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

Usa il flag --dry-run per testare

Specifica alcuni oggetti nello stesso modo di scan-object-acl

Nota: Gli oggetti perderanno eventuali ACL personalizzate

Elimina Versioni Non Crittografate

Elimina tutte le versioni non crittografate degli oggetti in un bucket

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

Per sicurezza, questo non eliminerà le versioni correnti degli oggetti

Usa il flag --dry-run per testare

Specifica alcuni oggetti nello stesso modo di scan-object-acl

Scansiona DNS

Scansiona Route 53 per i bucket per assicurarti di possederli

root@kitploit:~
s3tk scan-dns

Altrimenti, potresti essere suscettibile a subdomain takeover

Credenziali

Le credenziali possono essere specificate in ~/.aws/credentials o con variabili d'ambiente. Vedi questa guida per una spiegazione delle variabili d'ambiente.

Puoi specificare un profilo da usare con:

root@kitploit:~
AWS_PROFILE=your-profile s3tk

Politiche IAM

Qui ci sono le autorizzazioni necessarie per ogni comando. Includi solo le dichiarazioni di cui hai bisogno.

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/*"
            ]
        }
    ]
}

Log di Accesso

Amazon Athena è ottimo per interrogare i log S3. Crea una tabella e interroga liberamente:

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

Log di CloudTrail

Amazon Athena è ottimo anche per interrogare i log di CloudTrail. Crea una tabella e interroga liberamente:

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

Buone Pratiche

Mantieni le cose semplici e segui il principio del minimo privilegio per ridurre la possibilità di errori.

  • Limita rigorosamente chi può eseguire operazioni relative ai bucket
  • Evita di mescolare oggetti con autorizzazioni diverse nello stesso bucket (usa una policy del bucket per imporlo)
  • Non specificare autorizzazioni di lettura pubbliche a livello di bucket (nessun GetObject nella policy del bucket)
  • Monitora frequentemente la configurazione per eventuali modifiche

Policy dei Bucket

Solo caricamenti privati

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

Prestazioni

Per i comandi che iterano sugli oggetti del bucket (scan-object-acl, reset-object-acl, encrypt e delete-unencrypted-versions), esegui s3tk su un server EC2 per una latenza minima.

Note

I comandi set-policy, block-public-access, enable-logging, enable-versioning e enable-default-encryption sono forniti per comodità. Raccomandiamo Terraform per la gestione dei tuoi bucket.

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
}

Aggiornamento

Esegui:

root@kitploit:~
pip install s3tk --upgrade

Per usare master, esegui:

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

Docker

Esegui:

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

Fai il commit delle tue credenziali:

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

Ed esegui:

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

Cronologia

Visualizza il changelog

Contribuire

Tutti sono incoraggiati ad aiutare a migliorare questo progetto. Ecco alcuni modi in cui puoi aiutare:

  • Segnala bug
  • Correggi bug e invia richieste pull
  • Scrivi, chiarisci o correggi la documentazione
  • Suggerisci o aggiungi nuove funzionalità

Per iniziare con lo sviluppo:

root@kitploit:~
git clone https://github.com/ankane/s3tk.git
cd s3tk
pip install --group dev
Scarica lo strumento