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.
Credenciales de AWS (formatos)
Sección titulada «Credenciales de AWS (formatos)»AKIA... Access Key ID de usuario IAM (de larga duración)ASIA... Access Key temporal (con session token) -> de roles/STS/IMDS# configuraraws configure # interactivoexport AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_SESSION_TOKEN=... # temporalesDe 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).
Enumeración inicial
Sección titulada «Enumeración inicial»aws sts get-caller-identity # ¿quién soy? (ARN, Account ID)aws iam list-users / list-roles # si permisoenumerate-iam # qué permisos tengo realmente# auditoría completaScoutSuite / Prowler aws # postura de seguridad de toda la cuentapacu # framework de explotación (enum + exploit)Servicios clave y su ataque
Sección titulada «Servicios clave y su ataque»aws ec2 describe-instances # instancias, IPs, security groupsaws 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 -> datosaws ec2 describe-snapshots --owner-ids <id>S3 (ver Buckets y almacenamiento público)
Sección titulada «S3 (ver Buckets y almacenamiento público)»aws s3 ls # buckets de la cuentaaws s3 ls s3://<bucket> # contenido# buckets públicos, escritura, secretos dentroaws lambda list-functions # funcionesaws 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)Secrets Manager / SSM / RDS
Sección titulada «Secrets Manager / SSM / RDS»aws secretsmanager list-secrets ; aws secretsmanager get-secret-value --secret-id Xaws ssm get-parameters-by-path --path / --recursive --with-decryption # SecureStringaws rds describe-db-instances ; snapshots públicos de RDSIAM (escalada, ver Abuso de IAM y escalada de privilegios)
Sección titulada «IAM (escalada, ver Abuso de IAM y escalada de privilegios)»# buscar permisos de escalada (AttachPolicy, PassRole, CreateAccessKey...)pacu -> módulos iam__privesc_scanPersistencia en AWS
Sección titulada «Persistencia en AWS»# 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 policiesPara la defensa
Sección titulada «Para la defensa»- Mínimo privilegio IAM + IAM Access Analyzer; sin claves estáticas (roles, IAM Identity Center).
- IMDSv2 forzado, security groups sin
0.0.0.0/0innecesario, 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.
Checklist de prueba
Sección titulada «Checklist de prueba»- 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)