跳到主要内容

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/