aws

AWS - common misconfigurations

MisconfigurationRiskWhat to look for
Public S3 bucketshighBucket policy or ACL allows * or anonymous access
IAM *:* policieshighWildcard actions/resources, esp. on iam:*, s3:*
Open security groups (0.0.0.0/0)highSSH/RDP/DB ports exposed to the internet
EC2 IMDSv1highSSRF can steal IAM creds from instance metadata
CloudTrail not enabled or partialmediumMissing logs, no multi-region trail, no log file validation
Access keys for IAM users (vs roles)mediumLong-lived keys in code, .env files, git history
Lambda functions with overly broad rolesmediumInline policies granting admin or service-wide access

Common tools

ToolPurpose
pacuAWS exploitation framework (offensive)
prowlerAWS security posture assessment (defensive)
scoutsuiteMulti-cloud security auditing
enumerate-iamEnumerate IAM permissions for a set of keys
AWSBucketDumpEnumerate "interesting" files in public S3 buckets

Useful commands

# whoami
aws sts get-caller-identity

# list your S3 buckets
aws s3 ls

# check if a specific bucket is public
aws s3api get-bucket-policy --bucket NAME --no-sign-request

# enumerate IAM users / roles
aws iam list-users
aws iam list-roles

# check for security groups with 0.0.0.0/0 open to SSH/RDP
aws ec2 describe-security-groups \
  --filters Name=ip-permission.cidr,Values=0.0.0.0/0 \
  --query 'SecurityGroups[*].[GroupId,GroupName,IpPermissions]'

# list EC2 instances and their IMDSv2 status
aws ec2 describe-instances \
  --query 'Reservations[].Instances[].[InstanceId,State.Name,MetadataOptions.HttpTokens]'