跳到主要内容

AWS RDS 云数据库攻防

0x0 前言

在平时攻防的过程中,经常会碰到数据库在云上的情况,本文将以 AWS 中的云数据库为例,主要谈谈在面对云数据库场景下的一些攻防手法。

目前 Amazon RDS 支持以下数据库:

  • MySQL
  • MariaDB
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server

0x1 前期侦查

1、访问凭证泄露

在前期进行信息收集时,可以通过一些传统常见下的被动信息收集方法,尝试收集目标的数据库账号密码、云服务账号的访问凭证、临时凭证、SDK 代码中泄露的密钥等等。

2、共享快照

对于 AWS RDS,可以在共享快照中,根据快照名称判断查找,看看是否有和目标相关联的快照,然后再通过还原快照的方式,获得快照中 RDS 的数据。

0x2 初始访问

1、访问凭证登录

如果前期收集到了数据库的账号密码,则可以直接使用其登录。

如果前期收集到了云服务账户的访问密钥或临时秘钥,则可以通过访问控制台或者命令行操作 RDS

2、弱口令

如果数据库存在弱口令,则可以通过密码爆破,猜解出 RDS 的账号密码。

在 AWS 上,RDS 账号名一般为 admin,通常密码一般为随机强密码,因此如果仅对 root、admin 用户进行爆破,则爆破的成功率较低。

所以可以尝试对其他常见用户名进行爆破,这类用户名可能是目标人员自行创建的账号,存在弱口令的可能性较高。

0x3 执行

1、云厂商命令行工具

如果知道云服务账号的访问密钥,对于 AWS 而言,可以使用 AWS 提供的命令行工具进行 SQL 语句的执行,除此之外也可以使用 SDK 执行 SQL 语句。

2、数据库连接工具

如果知道数据库的账号密码后,也可以使用 Navicat 进行连接访问,或者使用 MDUT 等类似工具对数据库进行渗透,但一般 RDS 提供的权限可能不会太高,使用这类工具失败的可能性较大。

0x4 权限提升

1、低权限下收集到高权限访问凭证信息

在使用低权限账号登录到数据库后,在数据库中可以尝试搜索访问密钥、账号密码等信息,获得高权限账号信息。

如果当前数据存在 Web 应用上的用户密码信息,则可以通过尝试获得 Web 应用系统权限,在 Web 应用系统权限下,搜索数据库的访问密钥或者云服务的 API 密钥,从而进一步横向到数据库高权限。

2、数据库自身漏洞

在有低权限账号后,也可以通过数据库自身漏洞进行提权,不过在云场景下,这种情况可能并不多见。

0x5 权限维持

1、控制台修改数据库账号密码

在 AWS 控制台处,可直接对数据库密码进行修改,但为了避免影响目标业务,一般情况下不建议这样做。

2、添加数据库账号

可以通过 AWS 命令或者数据库连接工具,为数据库创建账号,以实现权限维持的目的。

3、共享快照

在 AWS 控制台中,可以为目标数据库创建快照,然后将快照共享给自己,这样即使数据库权限丢失,在自己的账号下也能通过还原快照获取数据库内的数据了。

0x6 防御绕过

1、编辑警报

在 AWS 控制台中,可以通过修改目标的警报信息来避免自己的后续操作操作触发告警。

2、使用代理服务器连接

在实际场景中,应该使用代理服务器连接到目标数据库,以避免自己的 IP 被蓝队发现。

0x7 信息收集

1、通知邮箱

在 AWS RDS 的控制台处,可以在编辑警报处看到目标配置的通知邮箱地址,这种邮箱地址可能是目标公司的安全部门人员邮箱,应该予以关注。

2、性能详情

在 AWS RDS 控制台中,可以通过数据库性能详情信息,收集到目标 RDS TOP SQL 语句、TOP 连接主机、TOP 用户等信息。

3、MSSQL 读取实例信息

如果拿到了 MSSQL 数据库权限,则可以通过 BULK INSERT 读取数据库所在实例的文件,这里以日志文件为例。

create table #testtable(context ntext.png);
BULK INSERT #testtable FROM 'C:\ProgramData\Amazon\EC2Launch\log\agent.log'
WITH (DATAFILETYPE = 'char',KEEPNULLS.png)
select * from #testtable
drop table #testtable;

4、其他的信息收集

在 RDS 中还可以收集共享快照信息或者对数据库里的信息进行收集等。 在连接到数据后,可以查看数据库的连接记录,定位到数据库管理人员的 IP,也可以收集数据库中的账号密码,找到数据库的通用密码。

除此之外,数据库中存储的网站信息、个人敏感信息等都是信息收集的对象。

0x8 影响

1、恶意公开共享

如果攻击者将数据库快照恶意公开共享,那么任何人都能在 AWS RDS 公有快照中搜索到该快照,造成数据泄露。

2、其他影响

数据库权限被攻击者拿到后,还会造成破坏数据、篡改数据、加密勒索等等影响。

参考资料:

https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Welcome.html

https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/