云安全 | AWS S3存储桶安全设计缺陷分析

什么是AWS S3?

默认情况下,Amazon S3 是安全的。创建后,只有资源所有者才能访问他们创建的 Amazon S3 资源**。** Amazon S3 支持用户身份验证来控制对数据的访问。 您可以使用存储桶策略和访问控制列表 (ACL) 等访问控制机制来有选择地向用户和用户组授予权限。Amazon S3控制台会突出显示您的可公开访问的存储桶,指出公开可访问的资源,如果对您的存储桶策略或存储桶 ACL 的更改将使您的存储桶可公开访问,还会向您发出警告:您应该为您不希望公开访问的所有帐户和存储桶启用"阻止公共访问"。

您可以使用 HTTPS 协议通过 SSL 终端节点安全地将数据上传/下载到 Amazon S3。如果您需要额外的安全性,可以使用服务器端加密 (SSE) 选项来加密静态存储的数据 。如果传入的存储请求没有任何加密信息,您可以将 Amazon S3 存储桶配置为在存储对象之前自动对其进行加密。或者,您可以使用自己的加密库对数据进行加密,然后再将其存储在 Amazon S3 中。

Amazon Simple Storage Service (S3) 是一项 AWS 服务,供用户以持久、可扩展、高度可用且安全的方式存储和检索数据。S3 Bucket 的主要亮点是:

•用户身份验证以控制对数据的访问

•访问控制列表 (ACL) 可与存储桶策略结合使用来管理访问权限最高的用户或用户组

•可以通过起诉阻止公共访问来阻止公共访问

•数据可以使用 HTTPS 协议通过 SSL 端点上传或下载到 S3

•服务器端加密 (SSE) 可用于保护静态数据

•还可以配置存储前自动加密

来源:S3 常见问题解答:https://aws.amazon.com/s3/faqs/

S3中的IAM 策略类似于 Windows 组策略,为组及其用户提供非常具体的访问和控制权限。创建新用户和安全策略可能既复杂又耗时,这将导致经验不足的公司开放他们不像开放的权限。

与 Windows 策略错误一样,S3 存储桶上宽松的身份管理可能会产生不同的影响 --- 从轻微的信息泄漏到全面的数据泄露。例如,一些站点使用 S3 作为服务图像和 Javascript 等资产的平台。而其他人则使用 S3 将完整的服务器备份推送到云端。无论用例是什么,如果不进行适当的管理,都会存在一些漏洞。由此产生的漏洞不仅会带来问题的存在风险,还会带来漏洞存在的环境风险。

S3存储桶中的漏洞

对于渗透测试人员来说,要查找 AWS 托管应用程序中的漏洞,检查 S3 存储桶的存在和配置可以帮助识别数据漏洞、authN 和 authZ 问题等。如果这些漏洞存在**,攻击者可以完全访问您的 S3 存储桶,从而允许它们可以下载、上传和覆盖文件。**

攻击者将如何利用您的 S3 存储桶?

S3 存储桶名称并不是秘密,有很多方法可以找出它,如本文所述。一旦攻击者找到 S3 存储桶名称,他们就可以访问可用于访问或修改信息的配置信息,从而导致三种不同的情况。通过使用 AWS 命令行与 Amazon 的 API 对话,攻击者可以:

1.访问列表并读取 S3 存储桶中的文件

2.将文件写入/上传到 S3 存储桶

3.更改所有对象的访问权限并控制文件的内容(完全控制存储桶并不意味着攻击者获得对象的完全读取权限,但他们可以控制内容)

AWS 意识到这个安全问题,但不太可能缓解它,因为它是由用户配置错误和设计缺陷引起的。

img

许多公司将敏感数据存储在S3存储桶中,任何泄露都可能对公司的业务造成重大影响。Instagram 中的一个价值百万美元的漏洞允许攻击者读取 Instagram 上的所有图像和帐户。

Hackone报告还有另一个有趣的例子,安全研究人员可以将文件写入公司存储桶,而无需任何读取访问权限:https://hackerone.com/reports/128088

如何利用 S3 存储桶:

存储桶: https:// -uploads.s3-eu-west-1.amazonaws.com/

1.在 Windows/Linux/Mac 计算机中配置 AWS CLI:https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html

2.从 CLI 执行以下命令

复制代码
上传文件 --- aws s3 cp test.html s3://-uploads/删除文件 --- aws s3 rm s3://-uploads/test.html列出文件 --- aws s3 ls s3://-uploads/

img

谷歌Dorking

Google 是查找存储桶名称的另一个有用的地方,但它们很少出现。以下是一些呆子的例子:

•site:s3.amazonaws.com 示例

•site:s3.amazonaws.com example.com

•site:s3.amazonaws.com example-com

•site:s3.amazonaws.com com.example

•site:s3.amazonaws.com com-example

•site:s3.amazonaws.com filetype:xls password

可以使用AWSBucketDump:https://github.com/jordanpotti/AWSBucketDump 、 bucketkicker:https://github.com/craighays/bucketkicker等开源工具自动化流程 ,也可以使用greyhatwafare:https://buckets.grayhatwarfare.com/工具在线搜索互联网公开的 S3 存储桶。

S3 中的漏洞链:

反射式XSS 。如果我们可以执行 BUCKET READ,我们就可以列出资产并可能找到易受攻击的对象,例如在公司域上提供的易受攻击的 SWF。

存储型 XSS/资产控制。如果我们可以执行 BUCKET WRITE 或 BUCKET WRITE-ACP(也意味着对象写入),我们就可以修改现有内容或创建新内容,能够修改 javascript/css 文件或上传新的 HTML 文件。

Dos攻击。如果我们可以使用 OBJECT WRITE-ACP 修改对象的 ACP,我们就可以防止对象公开加载。

信息泄露。如果我们可以列出对象,我们可能会发现敏感信息。

远程代码执行。如果存储桶包含可修改的可执行文件,则可能会导致远程代码执行 (RCE),具体取决于可执行文件的使用位置以及它们是否/由谁下载。

其他漏洞:

•Amazon S3 存储桶允许完全匿名访问

•Amazon S3 存储桶允许列出任意文件

•Amazon S3 存储桶允许任意文件上传和公开

•Amazon S3 存储桶允许盲目上传

•Amazon S3 存储桶允许任意读取/写入对象

•Amazon S3 存储桶显示 ACP/AC

如何缓解/修复这些漏洞?

使用基于资源的访问策略授予对存储桶和对象的访问权限。在高层次上重点关注:

•阻止公共访问

•编辑存储桶公共访问设置

•编辑帐户公共访问设置

•设置对象权限

•设置ACL存储桶权限

•添加存储桶策略

•通过CORS添加跨域资源共享

•使用 S3 访问分析器

有关更多信息,请参阅AWS文档:https://docs.aws.amazon.com/AmazonS3/latest/user-guide/set-permissions.html

无偿获取网络安全优质学习资料与干货教程

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

相关推荐
雅欣鱼子酱1 小时前
USB Type-C PD取电(诱骗,诱电,SINK),筋膜枪专用取电芯片
网络·人工智能·芯片·电子元器件
xiaolizi5674897 小时前
安卓远程安卓(通过frp与adb远程)完全免费
android·远程工作
阿杰100017 小时前
ADB(Android Debug Bridge)是 Android SDK 核心调试工具,通过电脑与 Android 设备(手机、平板、嵌入式设备等)建立通信,对设备进行控制、文件传输、命令等操作。
android·adb
梨落秋霜7 小时前
Python入门篇【文件处理】
android·java·python
AI大模型应用之禅9 小时前
全球股市估值与可持续农业垂直种植技术的关系
网络·ai
掘根9 小时前
【仿Muduo库项目】HTTP模块2——HttpRequest子模块,HttpResponse子模块
网络·网络协议·http
遥不可及zzz10 小时前
Android 接入UMP
android
Coder_Boy_11 小时前
基于SpringAI的在线考试系统设计总案-知识点管理模块详细设计
android·java·javascript
汽车仪器仪表相关领域12 小时前
全自动化精准检测,赋能高效年检——NHD-6108全自动远、近光检测仪项目实战分享
大数据·人工智能·功能测试·算法·安全·自动化·压力测试
MOON404☾12 小时前
006.Backdoor后门编写
网络·安全·网络安全·系统安全