4. 数据存储库枚举:云存储桶、数据库、文件共享
数据存储库,说白了就是企业数据资产的大本营。云存储桶、数据库、文件共享——这三者是DSPM发现暴露路径的起点。我在项目里见过太多案例,数据泄漏往往不是因为什么高级攻击,而是存储库本身就被配成了“敞开大门”的状态。
枚举,就是把这些存储库一个不漏地找出来,再逐个检查它们的访问配置。听起来简单?实际操作时坑不少。我个人习惯把枚举分成三类场景来对待,每一类都有各自的识别技巧。
4.1 云存储桶枚举:三大主流平台扫一遍
云存储桶——AWS S3、Azure Blob、GCP Cloud Storage——是暴露路径的重灾区。为什么会这样?因为很多人默认“云上的东西就是安全的”。其实不然,桶的访问控制列表(ACL)和桶策略一旦配错,整个互联网都能看到里面的文件。
我个人习惯用三步法来枚举云存储桶:
- API 扫描:调用云服务商提供的 ListBuckets API。前提是你有有效的访问密钥。
- DNS 猜解:桶的域名往往是
<桶名>.s3.amazonaws.com这种格式。用工具跑一个常用词字典,看哪些桶名被注册了。 - 索引引擎扫描:直接在 Shodan、Censys 或 Google 里搜
site:s3.amazonaws.com。这是最意外的方式,我遇到过客户自己都不知道自己有个桶被公开了。
注意:API 扫描需要授权。DNS 猜解和索引扫描属于公开信息收集,但不代表可以随意下载桶内数据。我之前碰到过一个团队,扫出几百个公开桶直接批量下载——这其实是违法的。枚举是发现,不是利用。
实际测试中,我会先看桶的响应头。如果一个桶返回了 ListBucketResult XML,那说明它的列表权限是开放的——这是个危险信号。
# 测试桶是否允许匿名列出
curl -s -I https://mycompany-backup.s3.amazonaws.com/
# 看返回的 HTTP 状态码和头信息
# 如果返回 200 OK 并且没有要求鉴权,就需要进一步检查
4.2 数据库枚举:端口到服务,再到默认凭证
数据库枚举比云存储桶更细致一些。数据库很少直接暴露在公网上,但内网里就不好说了。我在项目中遇到过的情况是:数据库绑在 0.0.0.0 上,防火墙规则又漏了一条,等于半公开。
枚举数据库的常见路径:
- 端口扫描:MySQL 的 3306、PostgreSQL 的 5432、MongoDB 的 27017。一张表告诉你常见数据库的默认端口:
| 数据库类型 | 默认端口 | 常见暴露特征 |
|---|---|---|
| MySQL | 3306 | 直接返回版本号,容易被利用 |
| PostgreSQL | 5432 | 响应中带有认证方式信息 |
| MongoDB | 27017 | 未授权即可读取数据库列表 |
| Redis | 6379 | 无密码时直接执行命令 |
| Elasticsearch | 9200 | HTTP 接口可查询索引 |
我曾经处理过一个案例:某公司的 MongoDB 直接绑在公网 IP 上,端口扫描一开就发现了。连接上去之后,不需要任何密码就能看到所有数据库名称。注意,这里说的是“看到名称”,不是下载数据——但已经足够判定为高风险了。
一点经验:数据库枚举不只是扫端口。可以尝试用默认凭证登录。很多运维人员图省事,root/root、admin/admin 这种组合太常见了。扫到端口后,顺手用常见的几个默认密码试一下——你可能会被结果惊到。
枚举数据库时,要注意服务指纹识别。比如一个端口返回了 MongoDB 的默认报文,那它的暴露面就很大。
4.3 文件共享枚举:SMB、NFS、WebDAV 的敏感点
文件共享在传统企业里尤其多。Windows 的 SMB 共享、Linux 的 NFS 导出、还有各种 WebDAV 服务——这些东西一旦配置疏忽,数据就能在内网里到处流。
我经历过的一个场景:客户内部审计发现,一个部门的所有合同文件都放在一个 SMB 共享目录里,而这个共享目录的权限是 Everyone / 完全控制。你想想看,这意味着什么?任何能接入公司网络的人都能删除这些文件。
枚举文件共享的方法:
- SMB 共享扫描:用
smbclient -L //目标IP查看共享列表。 - NFS 导出枚举:用
showmount -e 目标IP列出 NFS 导出的目录。 - WebDAV 扫描:通过
OPTIONS请求头判断是否支持 HTTP 协议的 WebDAV 扩展。
# 列出 SMB 共享(需要在 Windows 或安装了 samba 客户端的机器上)
smbclient -L //192.168.1.100 -U guest%
核心发现:文件共享枚举最容易被忽略的是“匿名访问”。SMB 共享如果不设密码,任何人都能挂载。NFS 如果 /etc/exports 里写了 *(rw),那就是把整个目录裸奔了。WebDAV 如果基础认证没用 HTTPS,密码直接在网络上裸奔。
嗯,这里要注意一个细节:文件共享枚举要区分“内网”和“外网”。外网暴露的共享风险极高,因为攻击者可以直接从公网访问。内网暴露的共享风险也很高,但需要攻击者先打入内网——不过对于内部威胁来说,这就是个轻松的突破口。
4.4 枚举后的数据暴露评估清单
枚举完存储库后,不能只停留在“找到了多少个桶/数据库”的层面。我建议你问自己三个问题:
- 谁可以访问? 权限配置是否允许了不应有的主体?
- 从哪里访问? 是否可以从公网访问?是否被搜索引擎收录?
- 里面有什么? 是否存储了敏感数据?比如 PII、金融信息、源代码。
避坑指南:我曾经看到一个团队枚举出 200 多个存储库,但没有做数据分类。结果呢?花了两周时间做了一次完整的枚举,但最后还是漏掉了那个存有 3 万条客户信息的 CSV 文件——因为那个文件藏在一个他们认为“不敏感”的测试桶里。所以,枚举只是第一步,分类才是关键。
数据暴露路径的识别,起点就是存储库枚举。把这个基础打牢了,后面的权限分析和数据流追踪才靠谱。