Huge Logistics, a global logistics leader, has enlisted your team's expertise for an external security review of their cloud infrastructure. Starting with the provided AWS Account ID, your task is to uncover security flaws within their AWS environment and demonstrate the potential risks they pose. Every finding will bolster their defense against future threats.
题目提供的内容: AWS Account ID 104506445608
真实场景
由于 AWS RDS 的公共快照特性,大量数据库意外地暴露给了公众。Mitiga研究团队在一项调查中发现,在短短一个月的时间里,有2,783个RDS快照,其中810个一直对公众开放,而1,859个在某个时间点至少公开了一天到两天。这种开放的设置让未授权用户能够访问到可能包含敏感信息的数据,这为威胁行为者提供了可乘之机,他们可能会利用这些数据进行敲诈勒索、传播勒索软件或其他形式的恶意活动。
给自己的 IAM 用户分配 DescribeDBSnapshots 和 DescribeDBClusterSnapshots 权限,就能在 CLI 用了
快照还有另外一个,可以看到返回带有 private 字样的快照,这看起不来不像是本来想公开的
接下来操作为了方便到页面去,登录自己的 AWS 账户,搜 RDS,左侧栏选 快照 → 公有,直接搜快照 ID 即可

点进去,可以看到一些详情,比如是 postgresql 数据库

点右上角 操作 → 还原快照,来到新页面,数据库实例设置、集群存储配置 保持默认即可,
设置随便写个名字

实例配置选 可突增类(包括 t 类),然后选 db.t3.large 即可

连接 这我选公开访问(待会就不用额外设置 EC2 连接 了),然后新建 VPC 安全组,名字随意即可

最后点击最下面的 还原数据库集群,稍等一小会,数据库就创出来了,但还在恢复快照,这里要等挺久的(大概10来分钟)

选中数据库,点修改

然后重制密码,输入密码后直接拉到最下面,修改即可,确认 修改数据库实例即可

点刷新小按钮,状态为 正在重置主凭证,等状态重新变更为 可用,就点进去,数据库实例,查看终端节点和端口,直接通过密码连上去

因为我创建的允许公网连接,但 AWS 新创建的安全组不允许任意IP连接,所以我们要到安全组改一下,点击上图对 VPC 安全组,跳转到安全组页面

编辑入站规则,把源改为 0.0.0.0 即可

连上,切到 cust_orders 库,就能在表中拿到 flag 了
防御
这块 AWS 其实做的已经很好了,首先把快照改为公开时,会有强烈的提示。不过,既然提供了选项,那肯定会有用户会选择公开快照的

此外,如果选择了公开快照,AWS 会有定期检查并通过邮件提醒,当然不排除有人不怎么看注册 AWS 的邮箱,也存在是走 IAM 用户创建的,IAM 用户的邮件一般不咋看,或者根本没用邮箱
然后 AWS 也提供了快照加密选项,然后通过 kms 打通共享的用户,这样其他用婚纱就可以解密用了
此外,防御方可以创建一个 CloudWatch 事件规则来监听 RDS CopyDBSnapshot, CopyDBClusterSnapshot, ModifyDBSnapshot, ModifyDBSnapshotAttribute 动作,当 RDS 快照被复制、公开分享给其他用户时的日志记录,触发告警
周期性运行下面命令也是一个不错的选择
值得注意的是,在快照的所有者帐户中,将公共快照复制到另一个帐户或从另一个账户还原DB实例时不会生成日志事件。Mitiga的研究人员已经就这一缺陷与AWS进行了接触,并提出了一项功能要求。
最后,可以通过下面命令防止快照被公开分享
进一步阅读
- https://www.mitiga.io/blog/how-mitiga-found-pii-in-exposed-amazon-rds-snapshots - 其实就算快照里啥敏感信息也没有,也是有一定风险的,比如别人通过快照名称等要素,得知你组织账户ID啥的
