0Pricing
Ethical Hacking Academy · 课时

S3 与存储暴露

公开存储桶

S3 与存储暴露 是 CoddyKit 上的免费 Ethical Hacking Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ethical Hacking Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ethical Hacking Academy 课程共包含 4 节课。

存储桶为何会泄露数据

AWS S3、Azure Blob 和 GCP Cloud Storage 等对象存储,是云数据泄露最常见的来源之一。存储桶易于创建,也容易配置错误。

  • 意外设置为公开读取或公开 write
  • 使用可预测、容易猜到的名称
  • 存储桶策略或 ACL 范围过宽

单个公开存储桶就可能泄露数百万条记录。

S3 的命名方式

S3 存储桶名称必须全局唯一,并且会映射到可预测的 URL。这种可预测性正是能够进行枚举的原因。

任何猜中有效存储桶名称的人都可以探测其访问级别。

# Two equivalent S3 URL forms
https://my-bucket.s3.amazonaws.com/
https://s3.amazonaws.com/my-bucket/

# Region-specific endpoint
https://my-bucket.s3.eu-west-1.amazonaws.com/

检测公开存储桶

最快的测试方式是发送未经身份验证的请求。HTTP 状态码会告诉您访问状态。

  • 带有 XML 列表的 200 — 允许公开列出内容
  • 403 AccessDenied — 存储桶存在,但为私有
  • 404 NoSuchBucket — 存储桶不存在
# Anonymous listing attempt
curl -s https://example-data.s3.amazonaws.com/

# Anonymous via the AWS CLI (no signing)
aws s3 ls s3://example-data --no-sign-request

暴力猜测存储桶名称

攻击者会根据公司名称和常见后缀生成候选名称,然后逐一测试。工具可以大规模自动执行这一过程。

典型模式:company-backups、company-dev、company-logs、company-assets。

# Permutate and probe bucket names from a keyword
cloud_enum -k example

# Dedicated S3 enumerator
s3scanner scan --bucket-file candidates.txt

公开读取与公开 write

公开访问有两种形式,而公开 write 远比公开读取危险。

  • 公开读取 — 攻击者下载您的数据(数据泄露)
  • 公开 write — 攻击者上传或覆盖对象

公开 write 会导致网页篡改、在您的域名下托管恶意软件;如果存储桶提供网站或软件资源,还可能引发供应链攻击。

# Test for public write (DANGEROUS - only with authorization)
aws s3 cp test.txt s3://example-data/ --no-sign-request

# If this succeeds, the bucket allows anonymous uploads.

容易误解的“Block Public Access”

AWS 在账户和存储桶两个层级都提供Block Public Access设置。这些设置功能强大,但经常被误解。

  • 账户级设置会覆盖存储桶策略
  • 如果启用了 BPA,即使策略允许访问,存储桶也可能仍是私有的
  • 反过来,禁用 BPA 可能会突然暴露多个存储桶

务必检查实际生效的访问权限,而不要只检查某一项策略。

# Inspect block-public-access configuration
aws s3api get-public-access-block --bucket example-data
aws s3api get-bucket-policy-status --bucket example-data

Azure Blob 暴露

Azure 将对象存储在存储账户中的container内。配置错误会将某个 container 的公开访问级别设置为 blob 或 container。

存储账户名称同样是全局唯一且可预测的。

# Azure blob URL pattern
https://exampleacct.blob.core.windows.net/container/file.txt

# Anonymous list attempt against a public container
curl -s 'https://exampleacct.blob.core.windows.net/backups?restype=container&comp=list'

GCP Cloud Storage 暴露

通过向 allUsers 或 allAuthenticatedUsers 主体授予读取角色,可以将 Google Cloud Storage 存储桶设为公开。

其暴露模式与 S3 相似:名称可预测、可匿名探测,以及公开的 IAM 绑定。

# Anonymous list of a GCS bucket
curl -s https://storage.googleapis.com/example-bucket/

# Check IAM bindings for allUsers (authenticated)
gsutil iam get gs://example-bucket

攻击者会在其中寻找什么

公开存储桶只是入口,真正有价值的是其中的内容:

  • 数据库转储和备份
  • 包含机密的源代码和 .env files
  • 云凭证和 API 密钥
  • 客户 PII(个人数据)
  • 内部文档和配置

即使是一个很小的泄露 file,也可能包含能够进一步提升权限、最终控制整个账户的密钥。

修复与加固

修复存储暴露问题需要采用分层措施:

  • 在账户级别启用Block Public Access
  • 移除公开 ACL,以及 allUsers / allAuthenticatedUsers 授权
  • 使用限定到特定主体的存储桶策略
  • 启用加密和访问日志记录
  • 持续运行配置扫描,以发现新出现的公开存储桶

负责任地处理暴露的数据

发现一个充满真实数据的公开存储桶,会带来重大的道德和法律责任。

  • 不要下载超出证明暴露所需最小范围的数据
  • 绝不要外传或留存客户 PII
  • 立即并安全地报告
  • 遵守范围和交战规则

目标是证明访问确实存在,而不是收集数据。

快速检查

向 S3 存储桶 URL 发送匿名请求后返回 HTTP 403 AccessDenied。这说明了什么?

回顾:S3 与存储暴露

您已经了解了对象存储如何泄露数据,以及如何安全地进行测试。

  • 存储桶名称全局唯一且可预测,因此可以进行枚举
  • HTTP 状态码会揭示访问状态:200(公开)、403(私有)、404(不存在)
  • 公开 write 比公开读取更危险
  • 同样的模式也适用于 Azure Blob 和 GCP Cloud Storage
  • 使用 Block Public Access 和遵循最小权限原则的策略进行修复

下一节:元数据服务与 SSRF,一条云环境特有的攻击链。

常见问题解答

「S3 与存储暴露」课时是免费的吗?

是的 — 「S3 与存储暴露」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ethical Hacking Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ethical Hacking Academy 课程共包含 4 节课。

「S3 与存储暴露」这节课中我会学到什么?

公开存储桶 你通过在浏览器中直接运行的动手代码来练习 Ethical Hacking Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Ethical Hacking Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Ethical Hacking Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「S3 与存储暴露」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Ethical Hacking Academy 课中编写并运行代码吗?

能。每节 Ethical Hacking Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 云攻击面
  2. IAM 错误配置
  3. S3 与存储暴露
  4. 元数据与 SSRF
← 返回 Ethical Hacking Academy