AWS - Relational Database (RDS) Enum

Unterstütze HackTricks

Grundlegende Informationen

Der Relational Database Service (RDS), der von AWS angeboten wird, ist darauf ausgelegt, die Bereitstellung, den Betrieb und die Skalierung einer relationalen Datenbank in der Cloud zu vereinfachen. Dieser Dienst bietet die Vorteile von Kosteneffizienz und Skalierbarkeit, während er arbeitsintensive Aufgaben wie Hardwarebereitstellung, Datenbankkonfiguration, Patchen und Backups automatisiert.

AWS RDS unterstützt verschiedene weit verbreitete relationale Datenbank-Engines, darunter MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server und Amazon Aurora, mit Kompatibilität für sowohl MySQL als auch PostgreSQL.

Wichtige Funktionen von RDS umfassen:

  • Verwaltung von Datenbankinstanzen wird vereinfacht.

  • Erstellung von Read Replicas, um die Leseleistung zu verbessern.

  • Konfiguration von Multi-Availability Zone (AZ) Deployments, um hohe Verfügbarkeit und Failover-Mechanismen sicherzustellen.

  • Integration mit anderen AWS-Diensten, wie:

  • AWS Identity and Access Management (IAM) für robuste Zugriffskontrolle.

  • AWS CloudWatch für umfassende Überwachung und Metriken.

  • AWS Key Management Service (KMS) zur Sicherstellung der Verschlüsselung im Ruhezustand.

Anmeldeinformationen

Beim Erstellen des DB-Clusters kann der Master-Benutzername konfiguriert werden (admin standardmäßig). Um das Passwort dieses Benutzers zu generieren, können Sie:

  • Ein Passwort selbst angeben

  • RDS anweisen, es automatisch zu generieren

  • RDS anweisen, es im AWS Secret Manager verschlüsselt mit einem KMS-Schlüssel zu verwalten

Authentifizierung

Es gibt 3 Arten von Authentifizierungsoptionen, aber die Verwendung des Master-Passworts ist immer erlaubt:

Öffentlicher Zugriff & VPC

Standardmäßig wird kein öffentlicher Zugriff auf die Datenbanken gewährt, jedoch könnte er gewährt werden. Daher können standardmäßig nur Maschinen aus derselben VPC darauf zugreifen, wenn die ausgewählte Sicherheitsgruppe (werden in EC2 SG gespeichert) dies erlaubt.

Anstatt eine DB-Instanz offenzulegen, ist es möglich, einen RDS Proxy zu erstellen, der die Skalierbarkeit und Verfügbarkeit des DB-Clusters verbessert.

Darüber hinaus kann auch der Datenbankport geändert werden.

Verschlüsselung

Verschlüsselung ist standardmäßig aktiviert unter Verwendung eines von AWS verwalteten Schlüssels (ein CMK könnte stattdessen gewählt werden).

Durch Aktivierung Ihrer Verschlüsselung aktivieren Sie Verschlüsselung im Ruhezustand für Ihren Speicher, Snapshots, Read Replicas und Ihre Backups. Schlüssel zur Verwaltung dieser Verschlüsselung können mit KMS ausgestellt werden. Es ist nicht möglich, diese Verschlüsselungsebene nach der Erstellung Ihrer Datenbank hinzuzufügen. Es muss während der Erstellung erfolgen.

Es gibt jedoch eine Problemumgehung, die es Ihnen ermöglicht, eine unverschlüsselte Datenbank wie folgt zu verschlüsseln. Sie können einen Snapshot Ihrer unverschlüsselten Datenbank erstellen, eine verschlüsselte Kopie dieses Snapshots erstellen, diesen verschlüsselten Snapshot verwenden, um eine neue Datenbank zu erstellen, und schließlich wäre Ihre Datenbank dann verschlüsselt.

Transparent Data Encryption (TDE)

Neben den auf Anwendungsebene inhärenten Verschlüsselungsfunktionen von RDS unterstützt RDS auch zusätzliche Plattform-Verschlüsselungsmechanismen, um Daten im Ruhezustand zu schützen. Dazu gehört Transparent Data Encryption (TDE) für Oracle und SQL Server. Es ist jedoch wichtig zu beachten, dass TDE zwar die Sicherheit durch Verschlüsselung von Daten im Ruhezustand erhöht, es jedoch auch die Datenbankleistung beeinträchtigen kann. Diese Leistungsbeeinträchtigung ist besonders bemerkbar, wenn sie in Verbindung mit MySQL-Kryptografiefunktionen oder Microsoft Transact-SQL-Kryptografiefunktionen verwendet wird.

Um TDE zu nutzen, sind bestimmte Vorbereitungen erforderlich:

  1. Option Group Association:

  • Die Datenbank muss mit einer Optionsgruppe verknüpft sein. Optionsgruppen dienen als Container für Einstellungen und Funktionen, die die Datenbankverwaltung, einschließlich Sicherheitsverbesserungen, erleichtern.

  • Es ist jedoch wichtig zu beachten, dass Optionsgruppen nur für bestimmte Datenbank-Engines und -Versionen verfügbar sind.

  1. Einbeziehung von TDE in die Optionsgruppe:

  • Sobald die Datenbank mit einer Optionsgruppe verknüpft ist, muss die Oracle Transparent Data Encryption-Option in diese Gruppe aufgenommen werden.

  • Es ist wichtig zu erkennen, dass die TDE-Option, sobald sie zu einer Optionsgruppe hinzugefügt wurde, eine dauerhafte Einrichtung ist und nicht entfernt werden kann.

  1. TDE-Verschlüsselungsmodi:

  • TDE bietet zwei verschiedene Verschlüsselungsmodi:

  • TDE Tablespace Encryption: Dieser Modus verschlüsselt ganze Tabellen und bietet einen breiteren Schutzumfang.

  • TDE Column Encryption: Dieser Modus konzentriert sich auf die Verschlüsselung spezifischer, einzelner Elemente innerhalb der Datenbank und ermöglicht eine granularere Kontrolle darüber, welche Daten verschlüsselt werden.

Das Verständnis dieser Voraussetzungen und der betrieblichen Feinheiten von TDE ist entscheidend für die effektive Implementierung und Verwaltung der Verschlüsselung innerhalb von RDS, um sowohl die Datensicherheit als auch die Einhaltung notwendiger Standards zu gewährleisten.

Enumeration

# 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

Unauthenticated Access

AWS - RDS Unauthenticated Enum

Privesc

AWS - RDS Privesc

Post Exploitation

AWS - RDS Post Exploitation

Persistence

AWS - RDS Persistence

SQL Injection

Es gibt Möglichkeiten, auf DynamoDB-Daten mit SQL-Syntax zuzugreifen, daher sind typische SQL-Injektionen ebenfalls möglich.

Unterstütze HackTricks

Last updated