From 6a3219aecb1e0341666dcc51b912489f72fc9f97 Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 1 Nov 2025 11:04:25 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-rela --- .../aws-relational-database-rds-enum.md | 89 ++++++++++--------- .../aws-rds-unauthenticated-enum/README.md | 21 ++++- 2 files changed, 64 insertions(+), 46 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md index c3e7ed8b8..71c984c2d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md @@ -1,74 +1,74 @@ -# AWS - Relational Database (RDS) Enum +# AWS - 关系型数据库 (RDS) 枚举 {{#include ../../../banners/hacktricks-training.md}} ## 基本信息 -AWS 提供的 **关系数据库服务 (RDS)** 旨在简化 **云中关系数据库** 的部署、操作和扩展。该服务提供了成本效益和可扩展性的优势,同时自动化了诸如硬件配置、数据库配置、补丁和备份等劳动密集型任务。 +AWS 提供的 **Relational Database Service (RDS)** 旨在简化在云中部署、运行和扩展 **关系型数据库** 的流程。该服务在提高成本效率和可扩展性的同时,自动化了诸如硬件配置、数据库配置、补丁和备份等耗时的任务。 -AWS RDS 支持多种广泛使用的关系数据库引擎,包括 MySQL、PostgreSQL、MariaDB、Oracle 数据库、Microsoft SQL Server 和 Amazon Aurora,兼容 MySQL 和 PostgreSQL。 +AWS RDS 支持多种常用的关系型数据库引擎,包括 MySQL、PostgreSQL、MariaDB、Oracle Database、Microsoft SQL Server 和 Amazon Aurora,并对 MySQL 和 PostgreSQL 提供兼容性。 -RDS 的主要特点包括: +RDS 的主要特性包括: -- **数据库实例的管理** 简化。 -- 创建 **只读副本** 以增强读取性能。 -- 配置 **多可用区 (AZ) 部署** 以确保高可用性和故障转移机制。 +- **数据库实例的管理** 得到简化。 +- 创建 **只读副本 (read replicas)** 以提升读取性能。 +- 配置 **多可用区 (multi-Availability Zone, AZ) 部署** 以保证高可用性和故障切换机制。 - 与其他 AWS 服务的 **集成**,例如: -- AWS 身份和访问管理 (**IAM**) 以实现强大的访问控制。 -- AWS **CloudWatch** 以进行全面监控和指标。 -- AWS 密钥管理服务 (**KMS**) 以确保静态加密。 + - AWS Identity and Access Management (**IAM**) 用于强大的访问控制。 + - AWS **CloudWatch** 用于全面的监控和指标。 + - AWS Key Management Service (**KMS**) 用于确保存储加密。 -## 凭证 +## 凭据 -创建 DB 集群时,可以配置主 **用户名**(默认是 **`admin`**)。要生成该用户的密码,可以: +在创建 DB cluster 时,可以配置主用户的 **username**(默认为 **`admin`**)。要为该用户生成密码,你可以: -- **自己指定** 一个 **密码** -- 告诉 RDS **自动生成** 它 -- 告诉 RDS 在 **AWS Secret Manager** 中管理它,并使用 KMS 密钥加密 +- **自行指定** 一个 **密码** +- 告诉 RDS **自动生成** 密码 +- 告诉 RDS 在 **AWS Secret Manager** 中使用 KMS key 对其进行管理和加密
### 认证 -有 3 种类型的认证选项,但始终允许使用 **主密码**: +有 3 种认证选项,但总是允许使用 **主密码 (master password)**:
-### 公共访问与 VPC +### 公共访问 & VPC -默认情况下,**不授予公共访问** 数据库,但可以 **授予**。因此,默认情况下,只有来自同一 VPC 的机器才能访问它,如果所选的 **安全组**(存储在 EC2 SG 中)允许的话。 +默认情况下 **不授予数据库公共访问权限**,但也 **可以被授予**。因此,默认情况下只有来自相同 VPC 的机器能访问它,前提是所选的 **security group**(存储在 EC2 SG 中)允许访问。 -与其暴露 DB 实例,不如创建一个 **RDS Proxy**,它 **提高** 了 DB 集群的 **可扩展性** 和 **可用性**。 +与其直接暴露 DB 实例,也可以创建一个 **RDS Proxy**,它能 **提升** DB cluster 的 **可扩展性** 与 **可用性**。 -此外,**数据库端口也可以修改**。 +此外,**数据库端口也可以被修改**。 ### 加密 -**默认启用加密**,使用 AWS 管理的密钥(可以选择 CMK)。 +**默认启用加密**,使用 AWS 托管的密钥(也可以选择使用 CMK)。 -通过启用加密,您启用了 **存储、快照、只读副本和备份的静态加密**。管理此加密的密钥可以通过 **KMS** 发放。\ -在数据库创建后,无法添加此级别的加密。**必须在创建时进行**。 +启用加密后,你将为存储、快照、只读副本和备份启用 **静态加密 (encryption at rest)**。管理这些加密的密钥可以通过 **KMS** 颁发。\ +在数据库创建后无法添加此级别的加密。**必须在创建时启用**。 -然而,有一个 **变通方法允许您加密未加密的数据库,如下所示**。您可以创建未加密数据库的快照,创建该快照的加密副本,使用该加密快照创建新数据库,最后,您的数据库将被加密。 +不过,有一个 **变通方法可以将未加密的数据库加密**:你可以对未加密的数据库创建快照(snapshot),然后创建该快照的加密副本,使用该加密快照创建一个新的数据库,这样新数据库就会是加密的。 #### 透明数据加密 (TDE) -除了 RDS 在应用层固有的加密能力外,RDS 还支持 **额外的平台级加密机制** 以保护静态数据。这包括 Oracle 和 SQL Server 的 **透明数据加密 (TDE)**。然而,重要的是要注意,虽然 TDE 通过加密静态数据来增强安全性,但它也可能 **影响数据库性能**。这种性能影响在与 MySQL 加密函数或 Microsoft Transact-SQL 加密函数结合使用时尤为明显。 +除了 RDS 在应用层提供的加密能力外,RDS 还支持 **平台级别的额外加密机制** 来保护静态数据。这包括针对 Oracle 和 SQL Server 的 **Transparent Data Encryption (TDE)**。需要注意的是,虽然 TDE 通过对静态数据加密来增强安全性,但它也可能 **影响数据库性能**。当与 MySQL 的加密函数或 Microsoft Transact-SQL 的加密函数结合使用时,这种性能影响尤其明显。 -要使用 TDE,需要一些初步步骤: +要使用 TDE,需要满足以下前提步骤: -1. **选项组关联**: -- 数据库必须与选项组关联。选项组作为设置和功能的容器,促进数据库管理,包括安全增强。 -- 但是,重要的是要注意,选项组仅适用于特定的数据库引擎和版本。 -2. **在选项组中包含 TDE**: -- 一旦与选项组关联,Oracle 透明数据加密选项需要包含在该组中。 -- 需要认识到,一旦将 TDE 选项添加到选项组,它就成为永久性固定项,无法移除。 +1. **Option Group 关联**: + - 数据库必须与一个 option group 关联。option group 用作设置和功能的容器,便于管理数据库,包括安全性增强。 + - 注意,option group 仅适用于特定的数据库引擎和版本。 +2. **在 Option Group 中包含 TDE**: + - 关联到 option group 后,需要在该组中包含 Oracle 的 Transparent Data Encryption 选项。 + - 需注意,一旦在 option group 中添加了 TDE 选项,该选项将成为永久配置,无法移除。 3. **TDE 加密模式**: -- TDE 提供两种不同的加密模式: -- **TDE 表空间加密**:此模式加密整个表,提供更广泛的数据保护范围。 -- **TDE 列加密**:此模式专注于加密数据库中的特定单个元素,允许对加密数据进行更细粒度的控制。 + - TDE 提供两种不同的加密模式: + - **TDE Tablespace Encryption**:对整个表空间进行加密,提供更广范围的数据保护。 + - **TDE Column Encryption**:对数据库中的特定列进行加密,允许更细粒度的加密控制。 -理解这些前提条件和 TDE 的操作复杂性对于有效实施和管理 RDS 中的加密至关重要,以确保数据安全和遵守必要的标准。 +理解这些先决条件和 TDE 的操作细节对于在 RDS 中有效实施和管理加密非常重要,从而确保数据安全并符合必要的合规标准。 ### 枚举 ```bash @@ -80,6 +80,10 @@ aws rds describe-db-cluster-backtracks --db-cluster-identifier ## 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 --snapshot-identifier # Get DB instances info aws rds describe-db-instances #username, url, port, vpc, SG, is public? @@ -91,6 +95,7 @@ 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 --db-snapshot-identifier --availability-zone us-west-2a @@ -105,33 +110,33 @@ aws rds describe-db-proxy-targets ## reset credentials of MasterUsername aws rds modify-db-instance --db-instance-identifier --master-user-password --apply-immediately ``` -### 未经身份验证的访问 +### Unauthenticated Access {{#ref}} ../aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md {{#endref}} -### 权限提升 +### Privesc {{#ref}} ../aws-privilege-escalation/aws-rds-privesc/README.md {{#endref}} -### 利用后 +### Post Exploitation {{#ref}} ../aws-post-exploitation/aws-rds-post-exploitation/README.md {{#endref}} -### 持久性 +### Persistence {{#ref}} ../aws-persistence/aws-rds-persistence/README.md {{#endref}} -### SQL 注入 +### SQL Injection -有方法可以使用 **SQL 语法** 访问 DynamoDB 数据,因此,典型的 **SQL 注入也是可能的**。 +可以使用 **SQL syntax** 访问 DynamoDB 的数据,因此典型的 **SQL injections** 也是可能的。 {{#ref}} https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md index 471678236..b5c163f59 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md @@ -4,7 +4,7 @@ ## RDS -更多信息请参见: +更多信息请查看: {{#ref}} ../../aws-services/aws-relational-database-rds-enum.md @@ -12,11 +12,11 @@ ## 公共端口 -可以将 **数据库从互联网公开访问**。攻击者仍然需要 **知道用户名和密码、** IAM 访问权限,或者一个 **exploit** 才能进入数据库。 +可以将**数据库从互联网公开访问**。攻击者仍然需要**知道用户名和密码,**IAM 访问,或一个 **exploit** 来进入数据库。 -## 公开 RDS 快照 +## 公开的 RDS 快照 -AWS 允许将 **将下载 RDS 快照的访问权限授予任何人**。你可以非常容易地从你自己的账户列出这些公开的 RDS 快照: +AWS 允许授予**任何人下载 RDS snapshots 的访问权限**。你可以非常容易地从你自己的账户列出这些公开的 RDS snapshots: ```bash # Public RDS snapshots aws rds describe-db-snapshots --include-public @@ -32,6 +32,19 @@ aws rds describe-db-snapshots --snapshot-type public [--region us-west-2] ## Even if in the console appear as there are public snapshot it might be public ## snapshots from other accounts used by the current account ``` +## 公开的 RDS Cluster Snapshots + +类似地,你可以查找集群快照 +```bash +# Public RDS cluster snapshots +aws rds describe-db-cluster-snapshots --include-public + +## Search by account ID +aws rds describe-db-cluster-snapshots --include-public --query 'DBClusterSnapshots[?contains(DBClusterSnapshotIdentifier, `284546856933:`) == `true`]' + +# From the own account you can check if there is any public cluster snapshot with: +aws rds describe-db-cluster-snapshots --snapshot-type public [--region us-west-2] +``` ### 公共 URL 模板 ``` mysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306