对象存储(OSS)攻防案例

VSole2023-01-03 15:25:55

对象存储攻防案例

云上存储己经是企业中常见的一款云上产品,伴随着云上业务的发展,对象存储作为云原生一项重要的能力,暴露出一系列的安全问题,其中的权限配置是管理人员不可忽视的,从攻击者的视角来看几大云存储的攻击方法与利用。

1 对象存储

对象存储中可以有多个桶(Bucket),然后把对象(Object)放在桶里,对象又包含了三个部分:Key、Data 和 Metadata。

1.1 Bucket

存储空间(Bucket)是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。

  • 同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。
  • 每个用户可以拥有多个存储空间。
  • 存储空间的名称在 OSS 范围内必须是全局唯一的,一旦创建之后无法修改名称。
  • 存储空间内部的对象数目没有限制。

1.2 Object

对象(Object)是 OSS 存储数据的基本单元,也被称为 OSS 的文件。和传统的文件系统不同,对象没有文件目录层级结构的关系。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成,并且由存储空间内部唯一的 Key 来标识。

Key 是指存储桶中的唯一标识符,例如一个 URL 为:https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/202203171716980.png,这里的 geekby 是存储桶 Bucket 的名称,/MarkDown/202203171716980.png 就是 Key。

对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。可以简单的理解成数据的标签、描述之类的信息,这点不同于传统的文件存储,在传统的文件存储中这类信息是直接封装在文件里的,有了元数据的存在,可以大大的加快对象的排序、分类和查找。

Data 就是存储的数据本体。

2 对象存储的利用方式

2.1 Object 遍历

在创建 Bucket 时,可以选择是否公开,默认是 private 的权限,如果在错误的配置下,给了 Listobject 权限,就会导致可遍历存储桶。

2.1.1 阿里云

在此时如果选择公有读的话,会出现两种情况:

  • 在只配置读写权限设置为公有读或公共读写的情况下,无法列出对象,但能够直接读取对应的文件(正常情况)
  • 如果想列出 Object 对象,需要在 Bucket 授权策略中设置 ListObject 即可

2.2 Bucket 桶爆破

当不知道 Bucket 名称的时候,可以通过爆破获得 Bucket 名称,这有些类似于目录爆破,只不过目录爆破一般通过状态码判断,而这个通过页面的内容判断。

2.2.1 阿里云

  • AccessDenied:存在存储桶,但无权限访问

  • InvalidBucketName:表示存储桶的名称不符合规范,属于无效的存储桶名称

  • NoSuchBucket:表示不存在这个存储桶

2.3 特定的 Bucket 策略配置

特定的策略配置的指的是,如果管理员设置了某些 IP,UA 才可以请求该存储桶的话,此时如果错误的配置了 GetBucketPolicy,可导致攻击者获取策略配置

2.3.1 阿里云

通过直接访问:http(s)://url/?policy 来确定是否对 Bucket 具有读取权限

可以看到,管理员配置了对于任意认证主主体开放了所有 Action 的权限。

2.4 任意文件上传与覆盖

如果在配置存储桶时,管理员错误的将存储桶权限,配置为可写,这将会导致攻击者可上传任意文件到存储桶中,或覆盖已经存在的文件

2.4.1 阿里云

如果目标的对象存储支持 html 解析,那就可以利用任意文件上传进行 XSS 钓鱼、挂暗链、挂黑页、供应链投毒等操作。

2.6 Bucket 接管

假设管理员通过域名解析并绑定了一个存储桶,但是管理员将存储桶删除后,没有将域名解析的 CNAME 删除,这时会访问域名就会出现 NoSuchBucket 。因此可以登录自己的阿里云账号,创建同样的 Bucket 即可。

2.6.1 阿里云

在阿里云下,当 Bucket 显示 NoSuchBucket 说明是可以接管的,如果显示 AccessDenied 则不行。

2.7 Bucket 可修改

如果拥有 Bucket Policy 的编辑权限,可以通过上传或修改一个新的配置,进而实现攻击(拒绝服务或者修改访问策略)

2.7.1 阿里云

可以通过直接 PUT 一个配置,达到攻击的目的。

aliyun oss bucket-policy oss://securitytest-geekby --method put ./oss.json

参考

火线沙龙——浅析云存储的攻击利用方式https://www.bilibili.com/video/BV1Z44y1J7Rs

来源

作者:geekby原文地址:https://www.geekby.site/2022/03/%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E6%94%BB%E9%98%B2%E6%A1%88%E4%BE%8B/#2-%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E7%9A%84%E5%88%A9%E7%94%A8%E6%96%B9%E5%BC%8F如有侵权,请联系删除
oss对象存储
本作品采用《CC 协议》,转载必须注明作者和本文链接
CBLD名字乱写的,我自己都没想好这个工具叫什么名字,如果有好想法的时候可以在Issue中提出。 目录概要
最近在做项目的时候,测到了一个部署在云上的存在 Laravel UEditor SSRF 漏洞的站点,并且发现这个 SSRF 漏洞可以读取到临时凭证,这不巧了,正好最近写了一个云环境利用的工具。打点,但,是云环境一开始还是信息收集,首先通过指纹扫描发现在目标范围内的一个站点使用了 Laravel 框架,接着测试发现该站点存在 Laravel UEditor SSRF 漏洞。
存储空间的名称在 OSS 范围内必须是全局唯一的,一旦创建之后无法修改名称。和传统的文件系统不同,对象没有文件目录层级结构的关系。因此可以登录自己的阿里云账号,创建同样的 Bucket 即可。
存储空间的名称在 OSS 范围内必须是全局唯一的,一旦创建之后无法修改名称。和传统的文件系统不同,对象没有文件目录层级结构的关系。因此可以登录自己的阿里云账号,创建同样的 Bucket 即可。
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留。查看下pid所对应的进程文件路径,
笔者之前在Web漏洞挖掘指南 -SSRF服务器端请求伪造介绍了SSRF某些场景下的利用和绕过方法,有时开发对于SSRF的限制可能是简单的禁用内网地址来实现的,这时如果传入一个外网地址,将其重定向至内网地址,则可以绕过限制对内网服务器发出请求。
此前,我们报道了威胁行为者如何通过滥用配置错误问题以及从以前的恶意软件感染中获得的薄弱或被盗凭据来针对多个云环境(例如华为云)托管加密货币挖掘恶意软件。 这一次,我们发现了一个恶意活动,该活动使用阿里云(也称为阿里云)的对象存储服务 (OSS)进行恶意软件分发和非法加密货币挖掘活动。OSS是一项服务,允许阿里云客户将Web应用程序图像和备份信息等数据存储在云端。不幸的是,这不是我们第一次看到针对
存储桶(Bucket)是对象的载体,可理解为存放对象的“容器”,且该“容器”无容量上限、对象以扁平化结构存放在存储桶中,无文件夹和目录的概念,用户可选择将对象存放到单个或多个存储桶中[1]。由于存储桶具有扩展性高、存储速度快、访问权限可自由配置等优势,如今已纳入各大公有云厂商的关键基础设施中。
攻击团伙情报 APT37组织使用Konni RAT攻击欧盟目标 近期APT32(海莲花)组织攻击活动样本分析 透明部落以“清洁运动”为主题对印度国防部下属企业发起钓鱼攻击 疑似EvilNum针对欧洲金融实体
伴随着5G、大数据、人工智能、物联网等技术的飞速发展,各行各业的业务场景日益复杂,数据呈现出大规模、多样性的特点,特别是非结构化数据呈现出爆发式的增长态势。企业对数据库技术的需求不再局限于结构化的OLTP数据交易,而是需要进一步扩展到对多样化数据进行实时处理的场景。
VSole
网络安全专家