【网络安全】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

相关推荐
newxtc23 分钟前
【旷视科技-注册/登录安全分析报告】
人工智能·科技·安全·ddddocr
成都古河云24 分钟前
智慧场馆:安全、节能与智能化管理的未来
大数据·运维·人工智能·安全·智慧城市
Gworg25 分钟前
您与此网站之间建立的连接不安全解决方法
安全
ac-er88881 小时前
MySQL如何实现PHP输入安全
mysql·安全·php
jjyangyou5 小时前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计
AltmanChan5 小时前
大语言模型安全威胁
人工智能·安全·语言模型
马船长5 小时前
红帆OA iorepsavexml.aspx文件上传漏洞
安全
九河云9 小时前
AWS账号注册费用详解:新用户是否需要付费?
服务器·云计算·aws
神一样的老师9 小时前
利用亚马逊AWS IoT核心和MQTT进行数据采集的综合指南
云计算·aws
hikktn13 小时前
如何在 Rust 中实现内存安全:与 C/C++ 的对比分析
c语言·安全·rust