0x00 Introduction
本篇章中将说明云数据库相关的概念,以及其存在的安全风险。个人才疏学浅,有未阐述清楚或遗漏的地方,还请谅解,相关的内容可自行搜索。注:以下所有的内容都是以阿里云为主。
阿里云官方介绍:关系型数据库 RDS(Relational Database Service)是一种安全稳定可靠、高性价比、可弹性伸缩的在线数据库服务。传统数据库搭建都需要以操作系统为媒介,虽然这种站库分离的架构一定程度上的提高性能和安全性,但是会浪费系统资源。而云数据库部署在云端,通过互联网进行访问,方便维护和管理且可以根据业务拓展来弹性扩展存储和配置。
VPC 就是在共享网络环境中的一个隔离的网络环境,是基于阿里云创建的自定义私有网络,不同 VPC 之间是完全隔离的。简单理解为一个虚拟的局域网环境。VPC 是基于隧道技术实现的,每个 VPC 都有一个独立的隧道号,隧道号就对应着一个 VPC。每个 VPN 至少由三部分组成:私网网段、交换机和路由表。
0x01 Usage
这里选择“快捷创建”,如果有其他更精细化的需求,可在“标准创建”中选择。
-
RDS 购买:https://www.aliyun.com/product/rds -
说明文档:https://help.aliyun.com/zh/rds/
1. RDS
购买完成后可在“实例列表”中查看,点击实例名称即可进行。
进入实例后,首先“创建账号”。
可根据需要在来“创建数据库”。
默认情况下,只有在同一个 VPC 中的主机才能使用“内网地址”访问 RDS。
想要实现公网访问,就得将当前网络的出口 IP 加入到对于的白名单中。
添加白名单且测试正常后,点击“开通外网地址”。
2. ECS+RDS
在创建 ECS 实例时,在“网络及可用区”中选相同的 VPC 网络。
sudo apt updatesudo apt install mysql-server
0x02 Vulnerability
RDS 的攻击面基本都来自于用户侧配置问题,并且很多 RDS 都不会放在公网,而是在 VPC 的内网中,那么如果在公网中找到一个泄露了 RDS 账号与密码,可以先保留起来,等到打进内网的时候也许能派上用场,或根据密码特征来构造字典,以提高爆破成功的概率。
1. 密码泄漏
在创建 RDS 账号时,虽然符合强密码特征,但是也无法杜绝像:Aa123456
、QWEasd123
、Admin@123
等这样的弱口令,所以如果数据库服务可被公开访问,也会存在被暴力破解的风险。
其次就是,如果目标泄漏了网站的源码,可能也会在源码中会泄漏数据库的密码。除此之外,容易存在密码泄漏的地方还包括:Github、Gitee、使用手册、测试账号、配置文件、未授权的接口等。
2. 公开访问
默认情况下,从阿里云创建的 RDS 只能被 VPC 中的主机进行访问,如果配置不当,将服务部署到公网环境中,那么就会存在被暴力破解和未授权访问的问题。
如果白名单添加 0.0.0.0/0
,那么就会将 RDS 暴露在公网环境中,存在被暴力破解的风险。
3. ECS->RDS
这里使用 TerraformGoat 靶场作为演示,详细搭建可参考《云安全(二):对象存储》中“环境搭建”一节。注:安全起见,可在“安全组”中配置,只允许当前网络的出口 IP 进行访问。
随后搭建 RDS,搭建时需要注意“地域”和“网络”要和 ECS 中的一致。
在“数据库连接”中检测状态,如果连接失败,将 ECS 的 IP 地址添加到白名单即可。
通过 SSRF 漏洞,结合“元数据”特性,拿到 AK/SK。
拿到 AK/SK 并配置到 cf 中。命令:cf.exe alibaba rds ls
将 RDS 设置为公开访问,并将当前网络的出口 IP 添加到白名单中。命令:
-
cf.exe alibaba rds public
-
cf.exe alibaba rds whiteList -w IP
创建高权限后门用户 hacker。命令:cf.exe alibaba rds account -u hacker
成功登录目标 RDS 服务器。
0x03 Reference
https://help.aliyun.com/zh/vpc/
https://help.aliyun.com/zh/rds/
https://wiki.teamssix.com/CloudService/RDS/
http://cloudsec.huoxian.cn/docs/articles/aliyun/aliyun_rds
原文始发于微信公众号(JJ1ng):云安全(四):云数据库
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论