AWS - Relational Database (RDS) Enum

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

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 dimensionamento de um banco de dados relacional na nuvem. Este serviço oferece as vantagens de eficiência de custos e escalabilidade, automatizando tarefas intensivas em mão de obra como provisionamento de hardware, configuração de banco de dados, aplicação de patches e backups.

O AWS RDS suporta vários motores de banco de dados relacionais amplamente utilizados, incluindo MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server e Amazon Aurora, com compatibilidade tanto para MySQL quanto para PostgreSQL.

Recursos-chave do RDS incluem:

  • A gestão de instâncias de banco de dados é simplificada.

  • Criação de réplicas de leitura para melhorar o desempenho de leitura.

  • Configuração de implantações multi-zona de disponibilidade (AZ) para garantir alta disponibilidade e mecanismos de failover.

  • Integração com outros serviços da AWS, como:

  • AWS Identity and Access Management (IAM) para controle de acesso robusto.

  • AWS CloudWatch para monitoramento abrangente e métricas.

  • AWS Key Management Service (KMS) para garantir criptografia em repouso.

Credenciais

Ao criar o cluster de banco de dados, o nome de usuário mestre pode ser configurado (admin por padrão). Para gerar a senha deste usuário você pode:

  • Indicar uma senha você mesmo

  • Dizer ao RDS para gerá-la automaticamente

  • Dizer ao RDS para gerenciá-la no AWS Secret Manager criptografada com uma chave KMS

Autenticação

Existem 3 tipos de opções de autenticação, mas usar a senha mestre é sempre permitido:

Acesso Público & VPC

Por padrão, nenhum acesso público é concedido aos bancos de dados, no entanto, poderia ser concedido. Portanto, por padrão, apenas máquinas da mesma VPC poderão acessá-lo se o grupo de segurança selecionado (armazenado em SG EC2) permitir.

Em vez de expor uma instância de banco de dados, é possível criar um Proxy RDS que melhora a escalabilidade e disponibilidade do cluster de banco de dados.

Além disso, a porta do banco de dados pode ser modificada também.

Criptografia

A criptografia é habilitada por padrão usando uma chave gerenciada pela AWS (poderia ser escolhida uma CMK).

Ao habilitar sua criptografia, você está ativando criptografia em repouso para seu armazenamento, 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 depois que seu banco de dados foi criado. Isso deve ser feito durante sua criação.

No entanto, há uma solução alternativa que permite criptografar um banco de dados não criptografado da seguinte maneira. 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 então criptografado.

Criptografia de Dados Transparente (TDE)

Junto com as capacidades de criptografia inerentes ao RDS no nível da aplicação, o RDS também suporta mecanismos de criptografia adicionais em nível de plataforma para proteger os dados em repouso. Isso inclui Criptografia de Dados Transparente (TDE) para Oracle e SQL Server. No entanto, é crucial observar que enquanto o TDE aprimora a segurança criptografando dados em repouso, também pode afetar 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, são necessárias certas etapas preliminares:

  1. Associação de Grupo de Opções:

  • O banco de dados deve ser associado a um grupo de opções. Os grupos de opções servem como contêineres para configurações e recursos, facilitando a gestão do banco de dados, incluindo aprimoramentos de segurança.

  • No entanto, é importante observar que os grupos de opções estão disponíveis apenas para motores de banco de dados e versões específicas.

  1. 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. Modos de Criptografia TDE:

  • O TDE oferece dois modos de criptografia distintos:

  • Criptografia de Espaço de Tabelas TDE: Este modo criptografa tabelas inteiras, proporcionando um escopo mais amplo de proteção de dados.

  • Criptografia de Coluna TDE: Este modo concentra-se na criptografia de 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.

Enumeração

# 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

# 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

Acesso não autenticado

pageAWS - RDS Unauthenticated Enum

Privesc

pageAWS - RDS Privesc

Pós Exploração

pageAWS - RDS Post Exploitation

Persistência

pageAWS - RDS Persistence

Injeção de SQL

Existem maneiras de acessar dados do DynamoDB com sintaxe SQL, portanto, injeções de SQL típicas também são possíveis.

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización