AWS - Relational Database (RDS) Enum

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Usługa Relational Database Service (RDS) oferowana przez AWS została zaprojektowana w celu ułatwienia wdrażania, obsługi i skalowania bazy danych relacyjnej w chmurze. Ta usługa oferuje korzyści związane z efektywnością kosztów i skalowalnością, automatyzując pracochłonne zadania takie jak dostarczanie sprzętu, konfigurację bazy danych, łatanie i tworzenie kopii zapasowych.

AWS RDS obsługuje różne powszechnie używane silniki baz danych relacyjnych, w tym MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server i Amazon Aurora, z kompatybilnością zarówno z MySQL, jak i PostgreSQL.

Główne funkcje RDS obejmują:

  • Uproszczenie zarządzania instancjami bazy danych.

  • Tworzenie replik odczytu w celu poprawy wydajności odczytu.

  • Konfigurację wielozonowych wdrożeń (AZ) w celu zapewnienia wysokiej dostępności i mechanizmów awaryjnych.

  • Integrację z innymi usługami AWS, takimi jak:

  • AWS Identity and Access Management (IAM) dla solidnej kontroli dostępu.

  • AWS CloudWatch dla kompleksowego monitorowania i metryk.

  • AWS Key Management Service (KMS) w celu zapewnienia szyfrowania w spoczynku.

Dane uwierzytelniające

Podczas tworzenia klastra bazy danych, można skonfigurować nazwę użytkownika administratora (admin domyślnie). Aby wygenerować hasło tego użytkownika, można:

  • Wskazać hasło samodzielnie

  • Powiedzieć RDS, aby je automatycznie wygenerował

  • Powiedzieć RDS, aby zarządzał nim w AWS Secret Manager zaszyfrowanym kluczem KMS

Uwierzytelnianie

Istnieją 3 rodzaje opcji uwierzytelniania, ale zawsze można użyć hasła administratora:

Dostęp publiczny i VPC

Domyślnie nie udzielono dostępu publicznego do baz danych, jednak można go udzielić. Dlatego domyślnie tylko maszyny z tego samego VPC będą miały do niej dostęp, jeśli wybrana grupa zabezpieczeń (przechowywane są w EC2 SG) na to pozwala.

Zamiast wystawiać instancję bazy danych, można utworzyć RDS Proxy, który poprawia skalowalność i dostępność klastra bazy danych.

Co więcej, port bazy danych można również zmodyfikować.

Szyfrowanie

Szyfrowanie jest domyślnie włączone za pomocą zarządzanego klucza AWS (można wybrać CMK).

Włączając szyfrowanie, włączasz szyfrowanie w spoczynku dla swojego magazynu, migawek, replik odczytu i kopii zapasowych. Klucze do zarządzania tym szyfrowaniem można wydać, korzystając z KMS. Nie można dodać tego poziomu szyfrowania po utworzeniu bazy danych. Należy to zrobić podczas jej tworzenia.

Jednak istnieje sposób obejścia, który pozwala na zaszyfrowanie niezaszyfrowanej bazy danych. Możesz utworzyć migawkę swojej niezaszyfrowanej bazy danych, utworzyć zaszyfrowaną kopię tej migawki, użyć tej zaszyfrowanej migawki do utworzenia nowej bazy danych, a następnie, w końcu, twoja baza danych będzie zaszyfrowana.

Transparentne szyfrowanie danych (TDE)

Oprócz możliwości szyfrowania inherentnych dla RDS na poziomie aplikacji, RDS obsługuje również dodatkowe mechanizmy szyfrowania na poziomie platformy w celu zabezpieczenia danych w spoczynku. Obejmuje to Transparentne Szyfrowanie Danych (TDE) dla Oracle i SQL Server. Jednak ważne jest zauważenie, że podczas gdy TDE zwiększa bezpieczeństwo poprzez szyfrowanie danych w spoczynku, może to również wpłynąć na wydajność bazy danych. Ten wpływ na wydajność jest szczególnie zauważalny przy użyciu funkcji kryptograficznych MySQL lub funkcji kryptograficznych Microsoft Transact-SQL.

Aby skorzystać z TDE, konieczne są pewne kroki wstępne:

  1. Powiązanie grupy opcji:

  • Baza danych musi być powiązana z grupą opcji. Grupy opcji służą jako kontenery dla ustawień i funkcji, ułatwiając zarządzanie bazą danych, w tym wzmocnienie zabezpieczeń.

  • Jednak ważne jest zauważenie, że grupy opcji są dostępne tylko dla określonych silników baz danych i wersji.

  1. Włączenie TDE w grupie opcji:

  • Po powiązaniu z grupą opcji, opcja Oracle Transparent Data Encryption musi zostać uwzględniona w tej grupie.

  • Istotne jest zauważenie, że po dodaniu opcji TDE do grupy opcji staje się ona stałym elementem i nie można jej usunąć.

  1. Tryby szyfrowania TDE:

  • TDE oferuje dwa różne tryby szyfrowania:

  • Szyfrowanie przestrzeni tabel TDE: Ten tryb szyfruje całe tabele, zapewniając szerszy zakres ochrony danych.

  • Szyfrowanie kolumn TDE: Ten tryb koncentruje się na szyfrowaniu konkretnych, indywidualnych elementów w bazie danych, umożliwiając bardziej szczegółową kontrolę nad tym, które dane są szyfrowane.

Zrozumienie tych wymagań wstępnych i operacyjnych złożoności TDE jest kluczowe dla skutecznego wdrażania i zarządzania szyfrowaniem w RDS, zapewniając zarówno bezpieczeństwo danych, jak i zgodność z niezbędnymi standardami.

Wyliczanie

# 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

Dostęp bez uwierzytelnienia

pageAWS - RDS Unauthenticated Enum

Eskalacja uprawnień

pageAWS - RDS Privesc

Po wykorzystaniu

pageAWS - RDS Post Exploitation

Trwałość

pageAWS - RDS Persistence

Wstrzykiwanie SQL

Istnieją sposoby dostępu do danych DynamoDB za pomocą składni SQL, dlatego też typowe wstrzykiwania SQL są również możliwe.

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated