Updated Jul 14, 2026

Cloud Storage

Confirm exposed S3 buckets from a name list

Checks candidate S3 buckets for open permissions and can dump readable contents.

Agent

overview

What s3scanner does

S3Scanner sits after bucket discovery. Feed --buckets-file a list of names; scan reports permission verdicts, dump downloads readable objects into a file and folder.

Operators reach for it when cloud_enum or s3reverse already produced candidates. It does not invent names. Public AllUsers READ or WRITE is the exposure signal to chase.

Unlike lazys3, it does not permute new names. Unlike cloud_enum, it does not discover across clouds. Its job is confirm-and-capture on a known list, including non-AWS via --endpoint-url.

source github.com/sa7mon/S3Scanner

use cases

Where s3scanner fits

Check bucket permissions at scale

Run scan mode over a file of bucket names to learn which grant public read or write access, without touching their contents.

Dump the contents of open buckets

Enable dump mode to download what an exposed bucket holds, capturing evidence of the data that was reachable.

Scan S3-compatible providers

Set --endpoint-url and --endpoint-address-style to check buckets on non-AWS object stores that speak the S3 API.

Thread a large candidate list

Raise --threads so a long list of bucket names produced by discovery is checked in parallel rather than one at a time.

reference

s3scanner inputs and flags

7 inputs
NameTypeFlagDescription
buckets-fileFILE--buckets-fileFile containing bucket names, one per line.
scanBOOLEANscanScan bucket permissions.
dumpBOOLEANdumpDump the contents of open buckets.
threadsSTRING--threadsNumber of threads to use (default 4).
endpoint-urlSTRING--endpoint-urlEndpoint URL for an S3-compatible provider.
endpoint-address-styleSTRING--endpoint-address-styleEndpoint address style: path or vhost.

Showing key inputs. s3scanner exposes 7 inputs in total.

Full flag reference (7 inputs)
NameTypeFlagDescription
scanBOOLEANscanScan bucket permissions.
dumpBOOLEANdumpDump the contents of open buckets.
buckets-fileFILE--buckets-fileFile containing bucket names, one per line.
threadsSTRING--threadsNumber of threads to use (default 4).
endpoint-urlSTRING--endpoint-urlEndpoint URL for an S3-compatible provider.
endpoint-address-styleSTRING--endpoint-address-styleEndpoint address style: path or vhost.
insecureBOOLEAN--insecureDo not verify SSL certificates.

example

Run s3scanner

s3scanner · command
# scan a candidate bucket list with 8 threadss3scanner --buckets-file candidate-buckets.txt --threads 8 scan
sample output
example-static-assets    | bucket_exists     | AllUsers: [READ]           | AuthUsers: []example-app-backups      | bucket_exists     | AllUsers: [READ, WRITE]    | AuthUsers: [FULL_CONTROL]example-user-uploads     | bucket_exists     | AllUsers: []               | AuthUsers: [READ]example-terraform-state  | bucket_exists     | AllUsers: []               | AuthUsers: []example-cdn-logs         | bucket_not_exists |                            |example-media-prod       | bucket_exists     | AllUsers: [READ, READ_ACP] | AuthUsers: []example-legacy-site      | bucket_exists     | AllUsers: [READ]           | AuthUsers: []example-invoices         | bucket_exists     | AllUsers: []               | AuthUsers: [WRITE]

guidance

Choosing s3scanner

Use when you already have bucket names and need permission checks or content dumps. Pair upstream with cloud_enum or s3reverse; use lazys3 if you still need name brute force.

s3reverse

Normalizes mixed bucket references into one format before scanning.

cloud_enum

Discovers cloud storage across AWS, Azure, and GCP to produce candidate buckets.

lazys3

Brute-forces S3 bucket names from permutations to surface new targets.

faq

s3scanner questions

Enable scan to report bucket permissions without reading objects. Enable dump to download files from buckets that scan marked readable. Run scan first to triage, then dump only the buckets that need evidence capture.

Run s3scanner yourself

A file of bucket names feeds S3Scanner, which checks each one's permissions and dumps the open buckets, writing the exposed results as a queryable output.

Facts on this page come from the live Trickest tool library.