s3scanner
Scanner rapide de buckets S3 et vérificateur de permissions. Teste les buckets pour un accès public en lecture/écriture, liste leur contenu et dumpe les fichiers de buckets AWS S3 mal configurés. Fast S3 bucket scanner and permission checker. Tests buckets for public read/write access, lists contents, and dumps files from misconfigured AWS S3 buckets.
↗ https://github.com/sa7mon/S3ScannerOverview
S3Scanner probes AWS S3 buckets for misconfigured access controls. It checks if buckets exist, whether they allow anonymous read/write, and optionally dumps their contents. Useful for bug bounty, red team assessments, and validating S3 security posture.
Basic Usage
Scan a single bucket
s3scanner scan --bucket company-backup
Scan list of buckets from file
s3scanner scan --bucket-file buckets.txt
Also dump accessible files
s3scanner scan --bucket company-backup --dump
Specify output directory for dumps
s3scanner scan --bucket company-backup --dump --dump-dir ./downloads
Generating Bucket Names
# Generate permutations
company="targetcorp"
for suffix in "" "-dev" "-prod" "-staging" "-backup" "-data" "-logs" "-assets" "-static" "-uploads"; do
echo "${company}${suffix}"
echo "${suffix:1}-${company}" 2>/dev/null || true
done > buckets.txt
Scan the generated list
s3scanner scan --bucket-file buckets.txt
Checking Permissions
# S3Scanner checks these permissions:
# - READ (list bucket contents)
# - WRITE (upload files)
# - READ_ACP (read ACL)
# - WRITE_ACP (modify ACL)
# - FULL_CONTROL (all of the above)
# Results categories:
# [exists] [AuthUsers:READ] → readable by any authenticated AWS user
# [exists] [AllUsers:READ] → publicly readable (anonymous)
# [exists] [AllUsers:WRITE] → publicly writable (very dangerous!)
# [exists] [private] → no public access (correctly configured)
Manual Verification
Check if bucket exists and list contents
aws s3 ls s3://company-backup --no-sign-request
Download all files from public bucket
aws s3 sync s3://company-backup . --no-sign-request
Check bucket ACL (requires credentials)
aws s3api get-bucket-acl --bucket company-backup
Check bucket policy
aws s3api get-bucket-policy --bucket company-backup
Test anonymous write
aws s3 cp test.txt s3://company-backup/ --no-sign-request
Region Handling
Scan with specific AWS region
s3scanner scan --bucket company-backup --endpoint-url https://s3.us-west-2.amazonaws.com
For non-AWS S3-compatible services
s3scanner scan --bucket mybucket --endpoint-url https://minio.internal:9000
Output
JSON output
s3scanner scan --bucket-file buckets.txt --json
Save to file
s3scanner scan --bucket-file buckets.txt 2>&1 | tee results.txt
# Typical output:
# [found] company-backup | AuthUsers:READ AllUsers:READ
# [not_found] company-prod
# [found] company-assets | AllUsers:READ AllUsers:WRITE <-- very bad
Tips
- Public WRITE access is the most critical finding — attackers can plant malware or phishing content
- Check
.gitdirectories, database dumps, and config files first after gaining read access --dumpcan pull a lot of data — be careful about storage space and bandwidth- Combine with
trufflehogorgitleaksto scan dumped files for secrets
Help / Man page
s3scanner scan [options]
--bucket BUCKET Single bucket name to scan
--bucket-file FILE File with list of bucket names
--dump Dump files from accessible buckets
--dump-dir DIR Directory for dumped files (default: ./buckets)
--endpoint-url URL Custom S3 endpoint (for non-AWS)
--json JSON output
-t THREADS Threads (default: 4)
Vue d’ensemble
S3Scanner sonde les buckets AWS S3 à la recherche de contrôles d’accès mal configurés. Il vérifie si les buckets existent, s’ils autorisent la lecture/écriture anonyme, et peut optionnellement dumper leur contenu. Utile pour le bug bounty, les évaluations red team, et la validation de la posture de sécurité S3.
Utilisation basique
# Scanner un seul bucket
s3scanner scan --bucket company-backup
# Scanner une liste de buckets depuis un fichier
s3scanner scan --bucket-file buckets.txt
# Dumper aussi les fichiers accessibles
s3scanner scan --bucket company-backup --dump
# Spécifier un répertoire de sortie pour les dumps
s3scanner scan --bucket company-backup --dump --dump-dir ./downloads
Génération de noms de buckets
# Générer des permutations
company="targetcorp"
for suffix in "" "-dev" "-prod" "-staging" "-backup" "-data" "-logs" "-assets" "-static" "-uploads"; do
echo "${company}${suffix}"
echo "${suffix:1}-${company}" 2>/dev/null || true
done > buckets.txt
Scanner la liste générée
s3scanner scan --bucket-file buckets.txt
Vérification des permissions
# S3Scanner vérifie ces permissions :
# - READ (lister le contenu du bucket)
# - WRITE (téléverser des fichiers)
# - READ_ACP (lire l'ACL)
# - WRITE_ACP (modifier l'ACL)
# - FULL_CONTROL (tout ce qui précède)
# Catégories de résultats :
# [exists] [AuthUsers:READ] → lisible par n'importe quel utilisateur AWS authentifié
# [exists] [AllUsers:READ] → lisible publiquement (anonyme)
# [exists] [AllUsers:WRITE] → inscriptible publiquement (très dangereux !)
# [exists] [private] → aucun accès public (correctement configuré)
Vérification manuelle
# Vérifier si le bucket existe et lister son contenu
aws s3 ls s3://company-backup --no-sign-request
# Télécharger tous les fichiers d'un bucket public
aws s3 sync s3://company-backup . --no-sign-request
# Vérifier l'ACL du bucket (nécessite des identifiants)
aws s3api get-bucket-acl --bucket company-backup
# Vérifier la policy du bucket
aws s3api get-bucket-policy --bucket company-backup
# Tester l'écriture anonyme
aws s3 cp test.txt s3://company-backup/ --no-sign-request
Gestion des régions
# Scanner avec une région AWS spécifique
s3scanner scan --bucket company-backup --endpoint-url https://s3.us-west-2.amazonaws.com
# Pour les services compatibles S3 non-AWS
s3scanner scan --bucket mybucket --endpoint-url https://minio.internal:9000
Sortie
# Sortie JSON
s3scanner scan --bucket-file buckets.txt --json
# Sauvegarder dans un fichier
s3scanner scan --bucket-file buckets.txt 2>&1 | tee results.txt
# Sortie typique :
# [found] company-backup | AuthUsers:READ AllUsers:READ
# [not_found] company-prod
# [found] company-assets | AllUsers:READ AllUsers:WRITE <-- très mauvais
Conseils
- L’accès WRITE public est le constat le plus critique : les attaquants peuvent déposer des malwares ou du contenu de phishing
- Vérifier d’abord les répertoires
.git, les dumps de bases de données et les fichiers de config après avoir obtenu un accès en lecture --dumppeut télécharger beaucoup de données : attention à l’espace de stockage et à la bande passante- Combiner avec
trufflehogougitleakspour scanner les fichiers dumpés à la recherche de secrets
Aide / Page de manuel
s3scanner scan [options]
--bucket BUCKET Single bucket name to scan
--bucket-file FILE File with list of bucket names
--dump Dump files from accessible buckets
--dump-dir DIR Directory for dumped files (default: ./buckets)
--endpoint-url URL Custom S3 endpoint (for non-AWS)
--json JSON output
-t THREADS Threads (default: 4)