【网络安全】AWS S3 Bucket配置错误导致敏感信息泄露

未经许可,不得转载。

文章目录

前言

AWS(Amazon Web Services)是亚马逊公司提供的一个安全的云服务平台,旨在为个人、公司和政府机构提供计算能力、存储解决方案、内容交付和其他功能。作为全球领先的云服务提供商之一,AWS 提供了广泛的云计算服务,包括计算、存储、数据库、机器学习、人工智能、分析和互联网应用等多个领域的服务。

Amazon S3(Amazon Simple Storage Service)是AWS提供的一种高度可扩展的对象存储服务。它为开发人员和IT团队提供了一种简单的存储解决方案,具有卓越的数据可用性、安全性和性能。Amazon S3允许用户以对象(如文件、图片、视频等)的形式存储和检索数据,无需关心底层的硬件设备。

Amazon S3官方文档:https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/index.html

技术分析

在Amazon S3中,ACL表示访问控制列表:

  • 当ACL设置为AllUsers时,Amazon S3会将存储桶或对象的ACL视为公开的,允许所有用户(即公众)访问。
  • 当ACL设置为AuthenticatedUsers时,Amazon S3会将存储桶或对象的ACL视为公开的,允许所有已认证的用户访问。

Amazon S3在评估存储桶策略时,首先假设策略是公开的(即允许公众访问),接着,Amazon S3会评估策略以确定是否符合非公开条件,要被视为非公开的策略,存储桶策略必须仅授予对以下一项或多项固定值的访问权限,这些值不能包含通配符或AWS Identity and Access Management策略变量的值:

  • AWS主体、用户、角色或服务主体(例如aws:PrincipalOrgID
  • 一组CIDR(无类域间路由),使用aws:SourceIp
  • aws:SourceArn
  • aws:SourceVpc
  • aws:SourceVpce
  • aws:SourceOwner
  • aws:SourceAccount
  • s3:x-amz-server-side-encryption-aws-kms-key-id
  • aws:userid,但不能以AROLEID:*的模式开头
  • s3:DataAccessPointArn
  • s3:DataAccessPointAccount

这些规则帮助确保AWS S3存储桶和对象的访问控制策略合理且安全,避免未经授权的公开访问。

根据前面提到的规则,以下是一个示例被视为公开的存储桶策略:

复制代码
{
		"Principal": "*", 
		"Resource": "*", 
		"Action": "s3:PutObject", 
		"Effect": "Allow" 
	}

{
		"Principal": "*", 
		"Resource": "*", 
		"Action": "s3:PutObject", 
		"Effect": "Allow", 
		"Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}}
	}

在AWS CLI中存在一些S3命令和参数:

1、ls命令

aws s3 ls 命令用于列出指定S3存储桶中的对象和通用前缀(类似文件夹)。如果不指定存储桶名称,则默认列出当前AWS账号下所有存储桶中的内容。

示例:列出存储桶 example-bucket 下的所有对象:

复制代码
aws s3 ls s3://example-bucket/

2、cp命令

aws s3 cp 命令用于将本地文件或S3对象复制到本地或S3中的另一个位置。

示例:将本地文件 local-file.txt 复制到S3存储桶 example-bucket 中:

复制代码
aws s3 cp local-file.txt s3://example-bucket/

3、mv命令

aws s3 mv 命令用于将本地文件或S3对象移动到本地或S3中的另一个位置。该命令先复制源对象或文件到指定目标,然后再删除源对象或文件。

示例:将S3存储桶 source-bucket 中的对象 source-object.txt 移动到 destination-bucket

复制代码
aws s3 mv s3://source-bucket/source-object.txt s3://destination-bucket/

4、选项 --no-sign-request

--no-sign-request 是一个布尔值选项,用于AWS CLI命令,特别是在涉及S3操作时。

如果提供了 --no-sign-request 参数,则AWS CLI不会加载凭据进行请求签名,这意味着不会使用当前配置的AWS凭据进行认证。这通常用于执行一些公开的S3操作或者在某些特定的安全场景下使用。

例如,使用 --no-sign-request 参数的示例:

复制代码
aws s3 ls s3://public-bucket/ --no-sign-request

这会列出 public-bucket 存储桶中的内容,但不会加载或使用任何AWS凭据进行签名。

正文

印度石油有限公司公布各种技术职位的招聘信息,访问该网站下载考试准考证时,注意到这些文档是从 Amazon Web Services (AWS) S3 Bucket 提供的。

第一件事是尝试访问另一个目录,但没有成功。但当直接访问 S3 存储桶 URL 时,页面上列出了文件。

尝试访问显示的文件之一并成功,说明存储桶内容被设置为可公开访问。

1、获取 S3 存储桶 URL:https://edumedias.s3.amazonaws.com

2、在 Web 浏览器中或使用命令行工具 AWS CLI 访问 URL。

命令如下:

复制代码
aws s3 ls s3://edumedias --- no-sign-requestls s3://edumedias --- no-sign-request

回显:

复制代码
PRE 25July21_IPM/
 PRE 3/
 PRE 4th July IPM/
 PRE AWES/
 PRE App/
 PRE BCI/
 PRE BEL/
 PRE BSEB/
 PRE Backup_RD-27523/
 PRE BioMetric/
 PRE CB/
 PRE CBTExam/
 PRE CGDA/
 PRE CGPSC/
 PRE CIP/
 PRE CURAJ/
 PRE DB-BACKUP/
 PRE DBS_Team/
 PRE Datashare/
 PRE ELBLogs/
 PRE FRI/
 PRE GMU/
 PRE HC23/
 PRE HC_1/
 PRE IBPS/
 PRE IGCAR/

经过进一步测试,获取敏感数据:

复制代码
10th Marsheet
12th Marsheet
Caste Certificate
Diploma Marsheet
Employment Exchange Registration Card
GraduationTrade_Upload Marsheet
NOC_Certificate
NOC_from employer
National_Apprenticeship Certificate
NonCreamy_Layer Certificate
Photo
Proof_of Date Of Birth
Signature
State_Nursing Council Registration Certificate
Trade_Upload Marsheet

参考链接:

https://infosecwriteups.com/aws-s3-bucket-misconfiguration-exposes-pii-and-documents-of-job-seekers-7b1332b0ecf1

相关推荐
用户962377954481 天前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主2 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954484 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机5 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机5 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954485 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star5 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954485 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher6 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行9 天前
网络安全总结
安全·web安全