渗透测试 | 云上OSS攻防

前言

现在越来越多的应用开始上云,那么存储也从原来的本地存储迁移到了云上。云上用的最多的就是OSS,如果OSS的配置不正确,那么可能造成严重的风险,甚至导致全部数据泄露。

OSS的基本知识

先来了解一下OSS的基本知识

什么是OSS

OSS的英文全称是Object Storage Service,翻译成中文就是「对象存储服务」,官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。

白话文解释就是将系统所要用的文件上传到云硬盘上,该云硬盘提供了文件下载、上传等一列服务,这样的服务以及技术可以统称为OSS。

OSS常用的概念

1.存储空间(Bucket)

存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。

2.对象/文件(Object)

对象是 OSS 存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。

3.地域(Region)

地域表示 OSS 的数据中心所在物理位置。您可以根据费用、请求来源等综合选择数据存储的地域。详情请查看OSS已经开通的Region。

4.访问域名(Endpoint)

Endpoint 表示OSS对外服务的访问域名。OSS以HTTP RESTful API的形式对外提供服务,当访问不同地域的时候,需要不同的域名。通过内网和外网访问同一个地域所需要的域名也是不同的。具体的内容请参见各个Region对应的Endpoint。

5.访问密钥(AccessKey)

AccessKey,简称 AK,指的是访问身份验证中用到的AccessKeyId 和AccessKeySecret。OSS通过使用AccessKeyId 和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。AccessKeyId用于标识用户,AccessKeySecret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,其中AccessKeySecret 必须保密。

OSS的权限设置

下面以阿里云OSS进行说明。

阿里云OSS的权限分为了下面四种,如下图(来自阿里云OSS官网)

详细的可以看下面的链接:https://help.aliyun.com/zh/oss/user-guide/access-and-control/?spm=a2c4g.11186623.0.0.450c482axZlEw9

1702538373_657aac85b5a5f1f073109.png!small?1702538374517

访问OSS的方式

1)通过阿里云控制台访问bucket

2)使用命令行工具ossutil

3)使用图形化管理工具ossbrowser

4)使用阿里云SDK

5)使用REST API

1702538384_657aac90d378ff3a261fe.png!small

OSS域名访问规则

OSS是可以绑定域名访问的,一般遵循下面的规则,以阿里云OSS进行说明

访问域名结构为 BucketName.Endpoint

BucketName为您的存储空间名称,

Endpoint为存储空间对应的地域域名。

外网公开访读或公开读写的url格式

<Schema>://<Bucket>.<外网Endpoint>/<Object>

外网私有访问的url格式

<Schema>://<Bucket>.<外网Endpoint>/<Object>?签名信息

如下面

https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampledir/example.txt 外网公开访问 https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampledir/example.txt?OSSAccessKeyId=nz2pc56s936****&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv**** 外网私有访问

OSS常见的攻击方式

配置错误导致的未授权访问

如果配置为公开读或者公开读写,那么我们可以通过路径直接访问相应的文件或者写入相关的文件。这时可以访问bucket中的任意文件。

如:https://xxx.oss-cn-beijing.aliyuncs.com/test.png

1702538462_657aacde127832ed7a63d.png!small?1702538462668

注意,只配置这个是无法bucket的目录的,只有在Bucket授权策略中设置ListObject即可。这是就可以列出对象目录

1702538467_657aace39498c83515358.png!small?1702538468417

如下

1702538476_657aacecdcf9805eae8d7.png!small?1702538477924

Bucket劫持与子域接管风险

在阿里云下,当 Bucket 显示 NoSuchBucket 说明是可以接管的,如果显示 Access Denied 则不行。在管理员给存储桶配置了域名解析,但是管理员将存储桶删除后,没有将域名解析的CNAME删除,这时访问域名就会出现NoSuchBucket的情况。这种情况攻击者可以通过注册同样的存储桶名称来劫持该域名,只需要上传任意的文件,就可以让劫持的域名或者存储桶显示攻击者想要的信息或页面,存在安全风险。

如果在网站中发现了一个bucket,访问显示NoSuchBucket。那么我们可以在自己的OSS中建立一个相同名称的bucket并绑定相同的域名,这样目标网站就可以从我们的OSS中获取文件。进行 XSS 钓鱼、挂暗链、挂黑页、供应链投毒等操作。

可以通过下面的语法去搜索可能存在域名劫持的网站

精准搜索:body=”NoSuchBucket” && body=”BucketName” && body=”aliyuncs.com”

粗略检索:body=”NoSuchBucket” && body=”BucketName”

1702538501_657aad05d5bd18ef87b64.png!small?1702538502666

随机挑选一个访问

1702538506_657aad0a5b6bfd9ac4e60.png!small?1702538507166

这时你就可以新建一个与这个名字相同的bucket来劫持该域名。

Bucket 策略配置可读/写风险

当访问一个存储桶时,如果提示Access Denied,这时如果管理员错误的配置了PutBucketPolicy和GetBucketPolicy,此时就可以获取存储桶的配置策略,然后通过覆盖写入新配置从而获取存储桶的敏感文件。如修改Bucket策略为Deny使业务瘫痪

1702538525_657aad1d760e03c85a8f9.png!small?1702538526028

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

如下,正常访问是无法访问的

1702538543_657aad2f78eb4a0410279.png!small?1702538544492

使用aliyun的cli获取policy

1702538547_657aad33650914e35e911.png!small?1702538548272

可以看到配置了规定了要使用特定的UserAgent头才能去访问。添加UserAgent头后可以正常访问。

1702538557_657aad3db85d2f1167c09.png!small?1702538558480

AccessKeyId,SecretAccessKey泄露

如果目标的 AccessKeyId、SecretAccessKey 泄露,那么就能获取到目标对象存储的所有权限。

泄露的途径一般有下面的几种:

1)在目标网站源代码中找到(Js等)

2)通过反编译APK,找到敏感信息

3)通过GitHub等开源平台中的源代码可发现存在泄露的Key

1702538576_657aad50e37bf34742f49.png!small?1702538577617

配置存储桶可写导致的任意文件上传以覆盖

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

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

1702538592_657aad606c4bcdfed4085.png!small?1702538593002

总结

由于OSS导致的数据泄露事件已经有很多了,因此在配置OSS的一定要注意权限的问题。大家在测试的时候,也可以多关注一下OSS的风险。

参考链接

https://zhuanlan.zhihu.com/p/566350805

https://zhuanlan.zhihu.com/p/477760498

 

本文作者:Notadmin, 转载自FreeBuf.COM

© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容