AWS - 关系型数据库 (RDS) 枚举
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
基本信息
AWS 提供的 Relational Database Service (RDS) 旨在简化在云中部署、运行和扩展 关系型数据库 的流程。该服务在提高成本效率和可扩展性的同时,自动化了诸如硬件配置、数据库配置、补丁和备份等耗时的任务。
AWS RDS 支持多种常用的关系型数据库引擎,包括 MySQL、PostgreSQL、MariaDB、Oracle Database、Microsoft SQL Server 和 Amazon Aurora,并对 MySQL 和 PostgreSQL 提供兼容性。
RDS 的主要特性包括:
- 数据库实例的管理 得到简化。
- 创建 只读副本 (read replicas) 以提升读取性能。
- 配置 多可用区 (multi-Availability Zone, AZ) 部署 以保证高可用性和故障切换机制。
- 与其他 AWS 服务的 集成,例如:
- AWS Identity and Access Management (IAM) 用于强大的访问控制。
- AWS CloudWatch 用于全面的监控和指标。
- AWS Key Management Service (KMS) 用于确保存储加密。
凭据
在创建 DB cluster 时,可以配置主用户的 username(默认为 admin)。要为该用户生成密码,你可以:
- 自行指定 一个 密码
- 告诉 RDS 自动生成 密码
- 告诉 RDS 在 AWS Secret Manager 中使用 KMS key 对其进行管理和加密
.png)
认证
有 3 种认证选项,但总是允许使用 主密码 (master password):
.png)
公共访问 & VPC
默认情况下 不授予数据库公共访问权限,但也 可以被授予。因此,默认情况下只有来自相同 VPC 的机器能访问它,前提是所选的 security group(存储在 EC2 SG 中)允许访问。
与其直接暴露 DB 实例,也可以创建一个 RDS Proxy,它能 提升 DB cluster 的 可扩展性 与 可用性。
此外,数据库端口也可以被修改。
加密
默认启用加密,使用 AWS 托管的密钥(也可以选择使用 CMK)。
启用加密后,你将为存储、快照、只读副本和备份启用 静态加密 (encryption at rest)。管理这些加密的密钥可以通过 KMS 颁发。
在数据库创建后无法添加此级别的加密。必须在创建时启用。
不过,有一个 变通方法可以将未加密的数据库加密:你可以对未加密的数据库创建快照(snapshot),然后创建该快照的加密副本,使用该加密快照创建一个新的数据库,这样新数据库就会是加密的。
透明数据加密 (TDE)
除了 RDS 在应用层提供的加密能力外,RDS 还支持 平台级别的额外加密机制 来保护静态数据。这包括针对 Oracle 和 SQL Server 的 Transparent Data Encryption (TDE)。需要注意的是,虽然 TDE 通过对静态数据加密来增强安全性,但它也可能 影响数据库性能。当与 MySQL 的加密函数或 Microsoft Transact-SQL 的加密函数结合使用时,这种性能影响尤其明显。
要使用 TDE,需要满足以下前提步骤:
- Option Group 关联:
- 数据库必须与一个 option group 关联。option group 用作设置和功能的容器,便于管理数据库,包括安全性增强。
- 注意,option group 仅适用于特定的数据库引擎和版本。
- 在 Option Group 中包含 TDE:
- 关联到 option group 后,需要在该组中包含 Oracle 的 Transparent Data Encryption 选项。
- 需注意,一旦在 option group 中添加了 TDE 选项,该选项将成为永久配置,无法移除。
- TDE 加密模式:
- TDE 提供两种不同的加密模式:
- TDE Tablespace Encryption:对整个表空间进行加密,提供更广范围的数据保护。
- TDE Column Encryption:对数据库中的特定列进行加密,允许更细粒度的加密控制。
- TDE 提供两种不同的加密模式:
理解这些先决条件和 TDE 的操作细节对于在 RDS 中有效实施和管理加密非常重要,从而确保数据安全并符合必要的合规标准。
枚举
# Clusters info
## Get Endpoints, username, port, iam auth enabled, attached roles, SG
aws rds describe-db-clusters
aws rds describe-db-cluster-endpoints #Cluster URLs
aws rds describe-db-cluster-backtracks --db-cluster-identifier <cluster-name>
## Cluster snapshots
aws rds describe-db-cluster-snapshots
aws rds describe-db-cluster-snapshots --include-public --snapshot-type public
## Restore cluster snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-cluster-identifier <ID> --snapshot-identifier <ID>
# Get DB instances info
aws rds describe-db-instances #username, url, port, vpc, SG, is public?
aws rds describe-db-security-groups
## Find automated backups
aws rds describe-db-instance-automated-backups
## Find snapshots
aws rds describe-db-snapshots
aws rds describe-db-snapshots --include-public --snapshot-type public
## Restore snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier <ID> --db-snapshot-identifier <ID> --availability-zone us-west-2a
# Any public snapshot in the account
aws rds describe-db-snapshots --snapshot-type public
# Proxies
aws rds describe-db-proxy-endpoints
aws rds describe-db-proxy-target-groups
aws rds describe-db-proxy-targets
## reset credentials of MasterUsername
aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password <NewPassword> --apply-immediately
Unauthenticated Access
AWS - RDS Unauthenticated Enum
Privesc
Post Exploitation
Persistence
SQL Injection
可以使用 SQL syntax 访问 DynamoDB 的数据,因此典型的 SQL injections 也是可能的。
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks Cloud

