AWS - Relational Database (RDS) Enum

Unterstützen Sie HackTricks

Grundinformationen

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 optimieren. Dieser Dienst bietet die Vorteile von Kosteneffizienz und Skalierbarkeit, während arbeitsintensive Aufgaben wie Hardwarebereitstellung, Datenbankkonfiguration, Patchen und Backups automatisiert werden.

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 sind:

  • Verwaltung von Datenbankinstanzen ist vereinfacht.

  • Erstellung von Lese-Replikaten, um die Leseleistung zu verbessern.

  • Konfiguration von Multi-Availability Zone (AZ)-Bereitstellungen, 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 Gewährleistung 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 zu verwalten, verschlüsselt mit einem KMS-Schlüssel

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 kann er gewährt werden. Daher können standardmäßig nur Maschinen aus derselben VPC darauf zugreifen, wenn die ausgewählte Sicherheitsgruppe (die in EC2 SG gespeichert ist) dies zulässt.

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

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

Verschlüsselung

Verschlüsselung ist standardmäßig aktiviert und verwendet einen von AWS verwalteten Schlüssel (ein CMK kann stattdessen ausgewählt werden).

Durch die Aktivierung Ihrer Verschlüsselung aktivieren Sie die Verschlüsselung im Ruhezustand für Ihren Speicher, Snapshots, Lese-Replikate und Ihre Backups. Schlüssel zur Verwaltung dieser Verschlüsselung können durch die Verwendung von KMS ausgegeben werden. Es ist nicht möglich, diese Ebene der Verschlüsselung hinzuzufügen, nachdem Ihre Datenbank erstellt wurde. Es muss während ihrer Erstellung erfolgen.

Es gibt jedoch einen Workaround, der 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.

Transparente Datenverschlüsselung (TDE)

Neben den Verschlüsselungsfunktionen, die RDS auf Anwendungsebene bietet, unterstützt RDS auch zusätzliche plattformseitige Verschlüsselungsmechanismen, um Daten im Ruhezustand zu schützen. Dazu gehört die Transparente Datenverschlüsselung (TDE) für Oracle und SQL Server. Es ist jedoch wichtig zu beachten, dass TDE zwar die Sicherheit erhöht, indem es Daten im Ruhezustand verschlüsselt, dies 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 vorbereitende Schritte erforderlich:

  1. Option Group Association:

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

  • 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 verbunden ist, muss die Oracle-Option für die transparente Datenverschlüsselung in diese Gruppe aufgenommen werden.

  • Es ist wichtig zu erkennen, dass die TDE-Option, sobald sie zu einer Optionsgruppe hinzugefügt wurde, ein permanenter Bestandteil wird und nicht entfernt werden kann.

  1. TDE-Verschlüsselungsmodi:

  • TDE bietet zwei verschiedene Verschlüsselungsmodi:

  • TDE Tablespace Encryption: Dieser Modus verschlüsselt gesamte Tabellen und bietet einen breiteren Schutzbereich für Daten.

  • 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 Einzelheiten 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.

Aufzählung

# 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

Privesc

Post Exploitation

Persistence

SQL Injection

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

Support HackTricks

Last updated