Saltearse al contenido

Pentesting AWS

AWS es el proveedor cloud más extendido, y su pentest gira en torno a las credenciales y los permisos IAM (ver Abuso de IAM y escalada de privilegios) más los servicios concretos mal configurados. Esta ficha recorre el flujo específico de AWS: desde conseguir credenciales y enumerar, hasta explotar los servicios más comunes (EC2, S3, Lambda, IAM) y escalar hasta el control de la cuenta.

AKIA... Access Key ID de usuario IAM (de larga duración)
ASIA... Access Key temporal (con session token) -> de roles/STS/IMDS
# configurar
aws configure # interactivo
export AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_SESSION_TOKEN=... # temporales

De dónde salen: filtradas (OSINT en repositorios de código), robadas por SSRF→IMDS (Metadata service (IMDS)), de buckets, o de un host comprometido (~/.aws/credentials).

aws sts get-caller-identity # ¿quién soy? (ARN, Account ID)
aws iam list-users / list-roles # si permiso
enumerate-iam # qué permisos tengo realmente
# auditoría completa
ScoutSuite / Prowler aws # postura de seguridad de toda la cuenta
pacu # framework de explotación (enum + exploit)
aws ec2 describe-instances # instancias, IPs, security groups
aws ec2 describe-security-groups # reglas (¿0.0.0.0/0?)
# robar credenciales del rol vía IMDS si hay SSRF/RCE (cloud-metadata)
# snapshots/AMIs públicos o compartidos -> datos
aws ec2 describe-snapshots --owner-ids <id>
aws s3 ls # buckets de la cuenta
aws s3 ls s3://<bucket> # contenido
# buckets públicos, escritura, secretos dentro
aws lambda list-functions # funciones
aws lambda get-function --function-name X # código y variables de entorno (¡secretos!)
# PassRole: crear/modificar función con rol admin -> escalada (cloud-iam, cloud-serverless)
aws secretsmanager list-secrets ; aws secretsmanager get-secret-value --secret-id X
aws ssm get-parameters-by-path --path / --recursive --with-decryption # SecureString
aws rds describe-db-instances ; snapshots públicos de RDS
# buscar permisos de escalada (AttachPolicy, PassRole, CreateAccessKey...)
pacu -> módulos iam__privesc_scan
# crear access key para un usuario (backdoor)
aws iam create-access-key --user-name victima
# usuario/rol nuevo con permisos; política de confianza modificada (AssumeRole)
# Lambda backdoor que se ejecuta por evento; modificar trust policies
  • Mínimo privilegio IAM + IAM Access Analyzer; sin claves estáticas (roles, IAM Identity Center).
  • IMDSv2 forzado, security groups sin 0.0.0.0/0 innecesario, S3 Block Public Access.
  • CloudTrail en todas las regiones + GuardDuty (detección); Config/Security Hub (postura).
  • Secrets Manager para secretos (no en variables de entorno/código); cifrado KMS.
  • SCPs (Organizations) para limitar el alcance máximo; MFA en usuarios privilegiados.
  • Conseguir y configurar credenciales (AKIA/ASIA)
  • sts get-caller-identity + enumerate-iam
  • ScoutSuite/Prowler para postura general
  • EC2: security groups, IMDS, snapshots/AMIs públicos
  • S3: buckets públicos/escritura/secretos (Buckets y almacenamiento público)
  • Lambda: código y variables de entorno (secretos)
  • Secrets Manager/SSM/RDS: secretos y snapshots
  • IAM: permisos de escalada → admin (Abuso de IAM y escalada de privilegios)