| 12-osint_iot_cloud_storage |
03 |
recon |
| s3 |
| gcs |
| azure-blob |
| digitalocean-spaces |
| cloud-storage |
| osint |
| bucket-enumeration |
|
| phase |
provides |
| 09-osint-infrastructure |
LimiterRegistry, ReconSource interface, shared Client |
|
| phase |
provides |
| 10-osint-code-hosting |
BuildQueries, RegisterAll pattern, sources.Client |
|
|
| S3Scanner — public AWS S3 bucket enumeration recon source |
| GCSScanner — public GCS bucket enumeration recon source |
| AzureBlobScanner — public Azure Blob container enumeration recon source |
| DOSpacesScanner — public DigitalOcean Spaces enumeration recon source |
| bucketNames() shared helper for provider-keyword bucket name generation |
| isConfigFile() shared helper for config-pattern file detection |
|
| 12-osint_iot_cloud_storage |
| register-all-wiring |
|
| added |
patterns |
|
|
| credentialless cloud bucket enumeration via anonymous HTTP HEAD+GET |
|
|
| created |
modified |
| pkg/recon/sources/s3scanner.go |
| pkg/recon/sources/gcsscanner.go |
| pkg/recon/sources/azureblob.go |
| pkg/recon/sources/dospaces.go |
| pkg/recon/sources/s3scanner_test.go |
| pkg/recon/sources/gcsscanner_test.go |
| pkg/recon/sources/azureblob_test.go |
| pkg/recon/sources/dospaces_test.go |
|
|
|
| bucketNames generates candidates from provider names + suffixes (not keywords) to produce readable bucket names |
| HEAD probe before GET listing to avoid unnecessary bandwidth on non-public buckets |
| isConfigFile checks extensions and common basenames (.env, config.*, credentials.*) without downloading contents |
| Azure iterates fixed container names (config, secrets, backup, etc.) within each account |
| DO Spaces iterates 5 regions (nyc3, sfo3, ams3, sgp1, fra1) per bucket |
|
| Cloud scanner pattern: HEAD probe for existence, GET for listing, filter by isConfigFile |
| BaseURL override pattern with %s placeholder for httptest injection |
|
| RECON-CLOUD-01 |
| RECON-CLOUD-02 |
| RECON-CLOUD-03 |
| RECON-CLOUD-04 |
|
4min |
2026-04-06 |