A public website referenced an S3 bucket that was also used to store internal migration artifacts. A shared archive in that bucket contained a script with embedded credentials, which allowed escalation and retrieval of private exports. This post explains what went wrong, how to mitigate it, and points your team to a free lab where they can safely practice the discovery and remediation steps.
What happened
- Public site assets and internal files were stored in the same S3 bucket.
- A migration archive in a public folder contained a script with embedded credentials.
- Those credentials allowed the investigator to access additional folders and download sensitive exports (PII and project artifacts).
- Root causes: poor separation of public vs private storage and hardcoded secrets.
Why this matters
- Even a short-lived public exposure can be discovered and harvested by automated scanners.
- Mixing public website storage with backups or migration exports creates a single point of failure.
- Hardcoded keys in files or archives are effectively permanent secrets unless rotated quickly.
How to reduce risk
- Separate public and private storage. Public website buckets only; private buckets for backups and migration data.
- No hardcoded secrets. Use secret management (AWS Secrets Manager, Parameter Store) and short-lived roles.
- Default deny & monitor. Enable S3 Block Public Access for private buckets, turn on CloudTrail and S3 logging, and alert on unusual access.
- Automate scanning. Add secret scanning to CI and periodic checks for new public objects.

Want to practice safely?
If your team wants hands-on practice with the exact scenario (safe, legal, and free), try the lab at Pwned Labs:
https://pwnedlabs.io/labs/aws-s3-enumeration-basics
This lab walks you through the discovery and remediation steps in a controlled environment — perfect for training developers, ops, and security teams.
Final thought
This is an operational failure more than a technical one: treat cloud storage and secrets as sensitive by default. Separate public assets from internal artifacts, stop embedding credentials in shipped files, and automate detection — those three changes remove the easiest attack vectors.
~Amber Sharma