Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/ankane/s3tk
Seguridad de Infraestructura en la NubeEscáneres de VulnerabilidadesHerramientas de Cifrado/DescifradoAuditoría de ConfiguraciónSeguridad en la NubeMala Configuración
GitHubankane/s3tk

s3tk

Un kit de herramientas de seguridad para Amazon S3

Ver Repositorio
459274hace 2 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

s3tk

Un conjunto de herramientas de seguridad para Amazon S3

Screenshot

🍊 Probado en combate en Instacart

Instalación

Ejecuta:

root@kitploit:~
pip install s3tk

Puedes usar la AWS CLI o AWS Vault para configurar tus credenciales de AWS:

root@kitploit:~
pip install awscli
aws configure

Consulta las políticas de IAM necesarias para cada comando.

Comandos

Escanear

Escanea tus buckets para buscar:

  • ACL abierta al público
  • política abierta al público
  • acceso público bloqueado
  • registro habilitado
  • versionado habilitado
  • cifrado predeterminado habilitado
root@kitploit:~
s3tk scan

Ejecutar solo en buckets específicos

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

También funciona con comodines

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

Confirma el/los bucket(s) de registro correcto(s) y el prefijo

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

Verificar el registro a nivel de objeto de CloudTrail [experimental]

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

Saltar registro, versionado o cifrado predeterminado

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

Recibir notificaciones por correo electrónico de fallos (a través de SNS)

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

Listar Política

Listar políticas de bucket

root@kitploit:~
s3tk list-policy

Ejecutar solo en buckets específicos

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

Mostrar declaraciones nombradas

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

Establecer Política

Nota: Esto reemplaza la política anterior

Solo cargas privadas

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

Eliminar Política

Eliminar política

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

Bloquear Acceso Público

Bloquear acceso público en buckets específicos

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

Usa la bandera --dry-run para probar

Habilitar Registro

Habilitar registro en todos los buckets

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

Solo en buckets específicos

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

Establecer prefijo de registro ({bucket}/ por defecto)

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

Usa la bandera --dry-run para probar

Algunas notas sobre el registro:

  • los buckets con registro ya habilitado no se actualizan en absoluto
  • el bucket de registro debe estar en la misma región que el bucket de origen - ejecuta este comando varias veces para diferentes regiones
  • puede tardar más de una hora en que aparezcan los registros

Habilitar Versionado

Habilitar versionado en todos los buckets

root@kitploit:~
s3tk enable-versioning

Solo en buckets específicos

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

Usa la bandera --dry-run para probar

Habilitar Cifrado Predeterminado

Habilitar cifrado predeterminado en todos los buckets

root@kitploit:~
s3tk enable-default-encryption

Solo en buckets específicos

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

Esto no cifra objetos existentes - usa el comando encrypt para esto

Usa la bandera --dry-run para probar

Escanear ACL de Objetos

Escanea ACL en todos los objetos de un bucket

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

Solo ciertos objetos

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

Excepto ciertos objetos

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

Restablecer ACL de Objetos

Restablecer ACL en todos los objetos de un bucket

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

Esto hace que todos los objetos sean privados. Consulta las políticas de bucket para saber cómo aplicar esto en el futuro.

Usa la bandera --dry-run para probar

Especifica ciertos objetos de la misma manera que scan-object-acl

Cifrar

Cifrar todos los objetos de un bucket con cifrado del lado del servidor

root@kitploit:~
s3tk encrypt my-bucket

Usa claves administradas por S3 por defecto. Para claves administradas por KMS, usa:

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

Para claves proporcionadas por el cliente, usa:

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

Usa la bandera --dry-run para probar

Especifica ciertos objetos de la misma manera que scan-object-acl

Nota: Los objetos perderán cualquier ACL personalizada

Eliminar Versiones no Cifradas

Eliminar todas las versiones no cifradas de objetos en un bucket

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

Por seguridad, esto no eliminará ninguna versión actual de objetos

Usa la bandera --dry-run para probar

Especifica ciertos objetos de la misma manera que scan-object-acl

Escanear DNS

Escanea Route 53 en busca de buckets para asegurarte de que los posees

root@kitploit:~
s3tk scan-dns

De lo contrario, podrías ser susceptible a toma de subdominio

Credenciales

Las credenciales se pueden especificar en ~/.aws/credentials o con variables de entorno. Consulta esta guía para una explicación de las variables de entorno.

Puedes especificar un perfil para usar con:

root@kitploit:~
AWS_PROFILE=your-profile s3tk

Políticas de IAM

Aquí están los permisos necesarios para cada comando. Incluye solo las declaraciones que necesites.

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

Registros de Acceso

Amazon Athena es excelente para consultar registros de S3. Crea una tabla y haz consultas:

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

Registros de CloudTrail

Amazon Athena también es excelente para consultar registros de CloudTrail. Crea una tabla y haz consultas:

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

Mejores Prácticas

Mantén las cosas simples y sigue el principio de privilegio mínimo para reducir la probabilidad de errores.

  • Limita estrictamente quién puede realizar operaciones relacionadas con buckets
  • Evita mezclar objetos con diferentes permisos en el mismo bucket (usa una política de bucket para aplicar esto)
  • No especifiques permisos de lectura pública a nivel de bucket (sin GetObject en la política de bucket)
  • Monitorea la configuración con frecuencia para detectar cambios

Políticas de Bucket

Solo cargas privadas

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

Rendimiento

Para comandos que iteran sobre objetos de bucket (scan-object-acl, reset-object-acl, encrypt, y delete-unencrypted-versions), ejecuta s3tk en un servidor EC2 para una latencia mínima.

Notas

Los comandos set-policy, block-public-access, enable-logging, enable-versioning, y enable-default-encryption se proporcionan por conveniencia. Recomendamos Terraform para gestionar tus buckets.

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
}

Actualización

Ejecuta:

root@kitploit:~
pip install s3tk --upgrade

Para usar master, ejecuta:

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

Docker

Ejecuta:

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

Confirma tus credenciales:

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

Y ejecuta:

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

Historial

Ver el registro de cambios

Contribuir

Se anima a todos a ayudar a mejorar este proyecto. Aquí hay algunas formas en que puedes ayudar:

  • Reportar errores
  • Corregir errores y enviar solicitudes de incorporación de cambios
  • Escribir, aclarar o corregir documentación
  • Sugerir o agregar nuevas funciones

Para comenzar con el desarrollo:

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