S3 Bucket Discovery
S3 bucket names are globally unique and often predictable. Discovery happens before you have any credentials — you are looking for buckets that are publicly accessible or whose names leak useful information.
Certificate Transparency
Certificates issued for *.s3.amazonaws.com subdomains and custom domain CNAMEs often expose bucket names. Search crt.sh:
https://crt.sh/?q=%25.$DOMAIN
Look for entries where the common name or SAN matches an S3 pattern:
assets.example.com → CNAME → assets.example.com.s3.amazonaws.com
Any CNAME pointing to *.s3.amazonaws.com is a bucket name.
Google Dorks
site:s3.amazonaws.com "$DOMAIN"
site:s3.amazonaws.com "$COMPANY"
site:$DOMAIN filetype:pdf
inurl:s3.amazonaws.com "$COMPANY"
Also search for exposed content directly:
site:s3.amazonaws.com inurl:backup
site:s3.amazonaws.com inurl:dump
site:s3.amazonaws.com inurl:config
Passive DNS and Subdomain Enumeration
Run standard subdomain enumeration against the target domain. S3-backed subdomains resolve to AWS IP ranges and have s3.amazonaws.com CNAMEs.
Permutation Brute-Forcing
S3Scanner tests a wordlist of bucket names for existence and public access.
Generate permutations from the target name:
[found] $COMPANY-backup - AuthUsers can read, Everyone can read [found] $COMPANY-assets - Everyone can read [not found] $COMPANY-dev
Explain command
| --buckets-file | File containing one bucket name per line. |
Everyone can read = publicly accessible without credentials. AuthUsers = any authenticated AWS account can read — still exploitable.
DNS Brute-Force via S3 Endpoint
Direct bucket URL format: https://$BUCKET.s3.amazonaws.com
A 301 or 200 response means the bucket exists. A 403 means it exists but is not public. A 404 means it does not exist.
403 is still a hit — it confirms the bucket exists even though it is not public. Note the name for authenticated enumeration later.
What to Do With a Found Bucket
200onhttps://$BUCKET.s3.amazonaws.com— bucket lists its contents without credentials. Proceed to enumeration.403— bucket exists, private. Test with credentials during enumeration phase.CNAME to
s3.amazonaws.comreturningNoSuchBucket— potential subdomain takeover. The bucket name is not claimed. Register it to capture traffic.
See S3 Bucket Enumeration and ACL Review for authenticated access.
Was this helpful?
Your feedback helps improve this page.