1. 项目概述:为什么SRC大佬都盯着OSS存储桶?
如果你在安全圈混过一段时间,或者经常关注各大SRC(安全应急响应中心)的漏洞榜单,你会发现一个现象:关于对象存储服务(OSS,比如阿里云OSS、腾讯云COS)的漏洞报告,尤其是“存储桶遍历”或“配置不当”这类问题,几乎常年霸榜。这背后不是偶然,而是因为对象存储已经成了现代应用架构的“数据湖”和“静态资源仓库”,里面可能存放着从用户上传的图片、视频,到系统备份文件、源代码、数据库导出,甚至是包含密钥的配置文件。一个配置疏忽,就可能让整个“湖”里的“鱼”被公开捕捞。
我这些年做渗透测试和安全审计,OSS存储桶是我必查的资产之一。原因很简单: 攻击成本极低,但收益可能极高 。你不需要去攻破复杂的Web应用防火墙,也不需要去挖掘0day漏洞,很多时候,只需要构造一个正确的URL,或者发送一个特定格式的HTTP请求,就能直接读取、上传甚至删除存储桶里的文件。这种漏洞的发现过程,更像是一种“资产梳理”和“配置验证”,非常适合自动化工具来辅助。
今天要聊的这个工具,就是圈内很多朋友都在用的一个利器。它不是什么秘密武器,而是一个在GitHub上开源的项目,叫OSS_Scanner。它的核心价值在于,它把针对多个主流云厂商(阿里云、腾讯云、华为云、AWS S3)存储桶的常见安全检测点,封装成了一个命令行工具,让你可以像做端口扫描一样,系统性地对目标存储桶进行“体检”。下面,我就结合自己大量的实战经验,把这个工具里里外外拆解一遍,告诉你它怎么用,更重要的是,告诉你它背后的检测逻辑、可能遇到的坑,以及如何真正把它变成你挖洞武器库里的常备工具。
2. 核心漏洞原理与工具设计思路
在直接上手工具之前,我们必须搞清楚它到底在检测什么。一个存储桶(Bucket)的安全,核心在于其访问策略(Policy)和配置项。工具检测的漏洞,本质上都是这些策略配置错误的结果。
2.1 存储桶权限模型浅析
以阿里云OSS为例,其权限主要分为两种: Bucket Policy(存储桶策略) 和 ACL(访问控制列表) 。ACL比较简单,就是一些预设的权限组(如私有、公共读、公共读写)。而Bucket Policy则是一个基于JSON的、更细粒度的权限控制文档,可以指定哪个“主体”(可以是另一个阿里云账号,也可以是匿名用户 * )在什么条件下(Condition),对哪些资源(Resource)执行什么操作(Action)。
工具检测的绝大多数漏洞,都源于Policy或ACL中对匿名用户( * )授予了过高的权限。例如,一个常见的错误配置是:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "oss:GetObject",
"Resource": "acs:oss:*:*:my-bucket/*"
}
]
}
这条策略意味着 任何互联网用户(Principal: “ ”)都可以读取(Action: “oss:GetObject”)my-bucket下的所有对象(Resource: “…/ ”) 。这就是“公开可读”漏洞。如果Action是 oss:PutObject ,那就是“匿名上传”漏洞。
2.2 工具检测的漏洞类型详解
OSS_Scanner工具将常见的配置错误归类为十几种漏洞进行检测,我们可以把它们分为几个大类:
第一类:数据泄露风险(直接读取敏感文件) 这是最直接的风险。工具会尝试访问一系列常见的敏感文件路径。
- 敏感密钥文件 :如
.env(框架环境变量)、id_rsa(SSH私钥)、access_key.txt、config.json等。这些文件一旦泄露,攻击者可能直接获取云账号AK/SK、数据库密码、第三方API密钥,导致更严重的横向渗透。 - 数据库备份文件 :如
.sql、.bak、.dump文件。这些文件通常包含完整的数据库结构和数据,是拖库的捷径。 - 应用配置文件 :如
wp-config.php(WordPress)、application.properties(Spring Boot)、web.config(.NET)。里面常有数据库连接串。 - 访问日志泄露 :很多开发者会把访问日志直接扔到存储桶的
/logs/目录下。这些日志可能包含访问令牌、用户行为轨迹、甚至后台管理地址和参数,是很好的信息收集来源。
实操心得 :工具内置的敏感文件字典是通用的,但实战中更有效的是结合目标业务特点。比如扫描一个Java应用,可以追加
application.yml,bootstrap.properties;扫描一个Node.js应用,可以看看有没有package.json泄露了内部模块和版本信息。我通常会自己维护一个根据目标技术栈定制的字典文件。
第二类:数据篡改与破坏风险(写入与删除权限) 这比单纯读取更危险,意味着攻击者可以污染你的数据或直接清空存储桶。
- 匿名PUT上传 :检测是否允许未经认证的用户直接上传对象。工具的做法是生成一个随机文件名(如
test_upload_xxxxx.txt),尝试PUT一个测试内容,如果返回200或201,则判定存在漏洞,并在检测后尝试删除该测试文件(如果也有删除权限的话)。 - 匿名POST表单上传 :针对通过HTML表单上传的场景进行检测。
- 匿名DELETE权限 :检测是否允许删除对象。工具会先上传一个测试文件(如果允许的话),再立即对其发起DELETE请求。
第三类:配置不当引发的安全边界模糊 这类漏洞可能不会直接导致数据泄露,但会扩大攻击面或为其他攻击提供便利。
- CORS(跨域资源共享)配置过宽 :CORS本是为了让浏览器能安全地进行跨域请求。但如果配置为允许任意来源(
Origin: *)并且允许敏感方法(如PUT、POST),攻击者就可以构造恶意网页,诱导已登录的用户浏览器向你的存储桶发起跨域写请求,这可能结合CSRF(跨站请求伪造)造成危害。 - 目录遍历(路径穿越) :严格来说,对象存储本身没有“目录”概念,只有前缀(Prefix)。但一些应用在拼接对象键(Key)时,如果未对用户输入进行过滤,可能产生类似
../../../etc/passwd这样的键名。如果存储桶策略允许读取,且后端系统以某种特殊方式解析了该键名,可能导致越权访问系统文件。工具通过尝试访问一些经典的路径穿越Payload来检测。




3068

被折叠的 条评论
为什么被折叠?



