Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-rela

This commit is contained in:
Translator
2025-11-01 11:05:54 +00:00
parent 4c415b0719
commit 8eca07c195
2 changed files with 55 additions and 37 deletions

View File

@@ -1,72 +1,72 @@
# AWS - Enum de Banco de Dados Relacional (RDS)
# AWS - Serviço de Banco de Dados Relacional (RDS) Enum
{{#include ../../../banners/hacktricks-training.md}}
## Informações Básicas
O **Serviço de Banco de Dados Relacional (RDS)** oferecido pela AWS é projetado para simplificar a implantação, operação e escalabilidade de um **banco de dados relacional na nuvem**. Este serviço oferece as vantagens de eficiência de custos e escalabilidade, enquanto automatiza tarefas que consomem muito tempo, como provisionamento de hardware, configuração de banco de dados, aplicação de patches e backups.
O **Relational Database Service (RDS)** oferecido pela AWS é projetado para simplificar a implantação, operação e escalabilidade de um **banco de dados relacional na nuvem**. Esse serviço oferece vantagens de custo e escalabilidade enquanto automatiza tarefas trabalhosas como provisionamento de hardware, configuração do banco de dados, patching e backups.
O AWS RDS suporta vários mecanismos de banco de dados relacionais amplamente utilizados, incluindo MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server e Amazon Aurora, com compatibilidade para MySQL e PostgreSQL.
O AWS RDS suporta diversos motores de banco de dados relacionais amplamente usados, incluindo MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server e Amazon Aurora, com compatibilidade para MySQL e PostgreSQL.
As principais características do RDS incluem:
Principais funcionalidades do RDS incluem:
- **Gerenciamento de instâncias de banco de dados** é simplificado.
- **Gerenciamento de instâncias de banco de dados** simplificado.
- Criação de **réplicas de leitura** para melhorar o desempenho de leitura.
- Configuração de **implantações em múltiplas Zonas de Disponibilidade (AZ)** para garantir alta disponibilidade e mecanismos de failover.
- **Integração** com outros serviços da AWS, como:
- Configuração de **implantações multi-Availability Zone (AZ)** para garantir alta disponibilidade e mecanismos de failover.
- **Integração** com outros serviços AWS, tais como:
- AWS Identity and Access Management (**IAM**) para controle de acesso robusto.
- AWS **CloudWatch** para monitoramento e métricas abrangentes.
- AWS Key Management Service (**KMS**) para garantir criptografia em repouso.
## Credenciais
Ao criar o cluster de DB, o **nome de usuário** mestre pode ser configurado (**`admin`** por padrão). Para gerar a senha deste usuário, você pode:
Ao criar o DB cluster, o **username** master pode ser configurado (**`admin`** por padrão). Para gerar a senha desse usuário você pode:
- **Indicar** uma **senha** você mesmo
- Dizer ao RDS para **gerar automaticamente**
- **Informar** uma **senha** você mesmo
- Dizer ao RDS para **gerar automaticamente** a senha
- Dizer ao RDS para gerenciá-la no **AWS Secret Manager** criptografada com uma chave KMS
<figure><img src="../../../images/image (144).png" alt=""><figcaption></figcaption></figure>
### Autenticação
Existem 3 tipos de opções de autenticação, mas usar a **senha mestre é sempre permitido**:
Existem 3 tipos de opções de autenticação, mas o uso da **senha master é sempre permitido**:
<figure><img src="../../../images/image (227).png" alt=""><figcaption></figcaption></figure>
### Acesso Público & VPC
Por padrão, **nenhum acesso público é concedido** aos bancos de dados, no entanto, **pode ser concedido**. Portanto, por padrão, apenas máquinas da mesma VPC poderão acessá-lo se o **grupo de segurança** selecionado (armazenado no EC2 SG) permitir.
Por padrão **nenhum acesso público é concedido** aos bancos de dados, entretanto ele **pode ser concedido**. Portanto, por padrão apenas máquinas da mesma VPC poderão acessá-lo se o **security group** selecionado (são armazenados em EC2 SG) permitir.
Em vez de expor uma instância de DB, é possível criar um **RDS Proxy** que **melhora** a **escalabilidade** e **disponibilidade** do cluster de DB.
Ao invés de expor uma DB instance, é possível criar um **RDS Proxy** que **melhora** a **escalabilidade** e a **disponibilidade** do DB cluster.
Além disso, a **porta do banco de dados pode ser modificada** também.
Além disso, a **porta do banco de dados também pode ser modificada**.
### Criptografia
**A criptografia é habilitada por padrão** usando uma chave gerenciada pela AWS (uma CMK pode ser escolhida em vez disso).
**A criptografia é habilitada por padrão** usando uma chave gerenciada pela AWS (um CMK pode ser escolhido em vez disso).
Ao habilitar sua criptografia, você está habilitando **criptografia em repouso para seu armazenamento, snapshots, réplicas de leitura e seus backups**. As chaves para gerenciar essa criptografia podem ser emitidas usando **KMS**.\
Não é possível adicionar esse nível de criptografia após o seu banco de dados ter sido criado. **Isso deve ser feito durante sua criação**.
Ao habilitar a criptografia, você está ativando a **criptografia em repouso para seu storage, snapshots, réplicas de leitura e seus backups**. Chaves para gerenciar essa criptografia podem ser emitidas usando **KMS**.\
Não é possível adicionar esse nível de criptografia após o banco de dados ter sido criado. **Deve ser feito durante a criação**.
No entanto, uma **solução alternativa que permite criptografar um banco de dados não criptografado da seguinte forma**. Você pode criar um snapshot do seu banco de dados não criptografado, criar uma cópia criptografada desse snapshot, usar esse snapshot criptografado para criar um novo banco de dados e, finalmente, seu banco de dados estaria criptografado.
No entanto, existe uma **solução alternativa que permite criptografar um banco de dados não criptografado da seguinte forma**. Você pode criar um snapshot do seu banco de dados não criptografado, criar uma cópia criptografada desse snapshot, usar esse snapshot criptografado para criar um novo banco de dados e, finalmente, seu banco de dados estará criptografado.
#### Criptografia de Dados Transparente (TDE)
#### Transparent Data Encryption (TDE)
Além das capacidades de criptografia inerentes ao RDS no nível da aplicação, o RDS também suporta **mecanismos adicionais de criptografia em nível de plataforma** para proteger dados em repouso. Isso inclui **Criptografia de Dados Transparente (TDE)** para Oracle e SQL Server. No entanto, é crucial notar que, embora o TDE melhore a segurança ao criptografar dados em repouso, ele também pode **afetar o desempenho do banco de dados**. Esse impacto no desempenho é especialmente notável quando usado em conjunto com funções criptográficas do MySQL ou funções criptográficas do Microsoft Transact-SQL.
Além das capacidades de criptografia inerentes ao RDS no nível de aplicação, o RDS também suporta **mecanismos adicionais de criptografia em nível de plataforma** para proteger dados em repouso. Isso inclui **Transparent Data Encryption (TDE)** para Oracle e SQL Server. No entanto, é importante notar que, embora o TDE aumente a segurança ao criptografar dados em repouso, ele também pode **impactar o desempenho do banco de dados**. Esse impacto de desempenho é especialmente perceptível quando usado em conjunto com funções criptográficas do MySQL ou funções criptográficas do Microsoft Transact-SQL.
Para utilizar o TDE, certos passos preliminares são necessários:
1. **Associação de Grupo de Opções**:
- O banco de dados deve estar associado a um grupo de opções. Grupos de opções servem como contêineres para configurações e recursos, facilitando o gerenciamento do banco de dados, incluindo melhorias de segurança.
- No entanto, é importante notar que grupos de opções estão disponíveis apenas para mecanismos de banco de dados e versões específicas.
2. **Inclusão do TDE no Grupo de Opções**:
- Uma vez associado a um grupo de opções, a opção de Criptografia de Dados Transparente do Oracle precisa ser incluída nesse grupo.
- É essencial reconhecer que, uma vez que a opção TDE é adicionada a um grupo de opções, ela se torna uma característica permanente e não pode ser removida.
1. **Associação a um Option Group**:
- O banco de dados deve estar associado a um option group. Option groups servem como contêineres para configurações e recursos, facilitando o gerenciamento do banco de dados, incluindo melhorias de segurança.
- Entretanto, é importante notar que option groups estão disponíveis apenas para motores e versões específicos de banco de dados.
2. **Inclusão do TDE no Option Group**:
- Uma vez associado a um option group, a opção Oracle Transparent Data Encryption precisa ser incluída nesse grupo.
- É essencial reconhecer que, uma vez adicionada a opção TDE a um option group, ela se torna uma configuração permanente e não pode ser removida.
3. **Modos de Criptografia TDE**:
- O TDE oferece dois modos distintos de criptografia:
- **Criptografia de Tablespace TDE**: Este modo criptografa tabelas inteiras, proporcionando um escopo mais amplo de proteção de dados.
- **Criptografia de Coluna TDE**: Este modo foca na criptografia de elementos específicos e individuais dentro do banco de dados, permitindo um controle mais granular sobre quais dados são criptografados.
- **TDE Tablespace Encryption**: esse modo criptografa tabelas inteiras, fornecendo um escopo mais amplo de proteção de dados.
- **TDE Column Encryption**: esse modo foca em criptografar elementos específicos e individuais dentro do banco de dados, permitindo um controle mais granular sobre quais dados são criptografados.
Compreender esses pré-requisitos e as complexidades operacionais do TDE é crucial para implementar e gerenciar efetivamente a criptografia dentro do RDS, garantindo tanto a segurança dos dados quanto a conformidade com os padrões necessários.
@@ -80,6 +80,10 @@ 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?
@@ -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 <ID> --db-snapshot-identifier <ID> --availability-zone us-west-2a
@@ -117,21 +122,21 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
../aws-privilege-escalation/aws-rds-privesc/README.md
{{#endref}}
### Pós Exploração
### Post Exploitation
{{#ref}}
../aws-post-exploitation/aws-rds-post-exploitation/README.md
{{#endref}}
### Persistência
### Persistence
{{#ref}}
../aws-persistence/aws-rds-persistence/README.md
{{#endref}}
### Injeção SQL
### SQL Injection
Existem maneiras de acessar dados do DynamoDB com **sintaxe SQL**, portanto, **injeções SQL típicas também são possíveis**.
Existem maneiras de acessar dados do DynamoDB com **SQL syntax**, portanto, típicas **SQL injections também são possíveis**.
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html

View File

@@ -1,10 +1,10 @@
# AWS - RDS Enumeração Não Autenticada
# AWS - RDS Unauthenticated Enum
{{#include ../../../../banners/hacktricks-training.md}}
## RDS
Para mais informações consulte:
Para mais informações, veja:
{{#ref}}
../../aws-services/aws-relational-database-rds-enum.md
@@ -12,11 +12,11 @@ Para mais informações consulte:
## Porta Pública
É possível dar acesso público ao **banco de dados pela internet**. O atacante ainda precisará **conhecer o username and password,** acesso IAM, ou um **exploit** para entrar no banco de dados.
É possível dar acesso público ao **banco de dados pela internet**. O attacker ainda precisará **saber o nome de usuário e a senha,** acesso IAM, ou um **exploit** para entrar no banco de dados.
## Snapshots RDS Públicos
## Snapshots Públicos do RDS
AWS permite dar **acesso a qualquer pessoa para baixar RDS snapshots**. Você pode listar esses snapshots RDS públicos muito facilmente a partir da sua própria conta:
A AWS permite dar **acesso a qualquer pessoa para baixar snapshots do RDS**. Você pode listar esses snapshots públicos do RDS muito facilmente a partir da sua própria conta:
```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 Públicos
Da mesma forma, você pode procurar por 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]
```
### Modelo de URL pública
```
mysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306