AWS - Relationale Datenbank (RDS) Aufzählung
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundlegende Informationen
Der Relational Database Service (RDS) von AWS ist dafür ausgelegt, die Bereitstellung, den Betrieb und die Skalierung einer relationalen Datenbank in der Cloud zu vereinfachen. Dieser Service bietet Kosteneffizienz und Skalierbarkeit und automatisiert gleichzeitig aufwändige Aufgaben wie Hardware-Bereitstellung, Datenbankkonfiguration, Patching und Backups.
AWS RDS unterstützt verschiedene weitverbreitete relationale Datenbank-Engines, darunter MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server und Amazon Aurora, mit Kompatibilität für MySQL und PostgreSQL.
Wesentliche Funktionen von RDS umfassen:
- Die Verwaltung von Datenbankinstanzen wird vereinfacht.
- Erstellen 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-Services, wie z. B.:
- AWS Identity and Access Management (IAM) für robustes Zugriffsmanagement.
- AWS CloudWatch für umfassendes Monitoring und Metriken.
- AWS Key Management Service (KMS) zur Gewährleistung der Verschlüsselung ruhender Daten.
Anmeldedaten
Beim Erstellen des DB-Clusters kann der Master-Benutzername konfiguriert werden (standardmäßig admin). Um das Passwort dieses Benutzers zu erzeugen, können Sie:
- Ein eigenes Passwort angeben
- RDS das Passwort automatisch generieren lassen
- RDS anweisen, es im AWS Secret Manager verschlüsselt mit einem KMS-Key zu verwalten
.png)
Authentifizierung
Es gibt 3 Arten der Authentifizierung, aber die Verwendung des Master-Passworts ist immer erlaubt:
.png)
Ö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, sofern die ausgewählte security group (in EC2 SG gespeichert) dies erlaubt.
Anstatt eine DB-Instanz zu exponieren, ist es möglich, einen RDS Proxy zu erstellen, der die Skalierbarkeit und Verfügbarkeit des DB-Clusters verbessert.
Auch der Datenbankport kann geändert werden.
Verschlüsselung
Verschlüsselung ist standardmäßig aktiviert und verwendet einen von AWS verwalteten Key (stattdessen kann ein CMK gewählt werden).
Durch Aktivierung der Verschlüsselung aktivieren Sie die Verschlüsselung ruhender Daten (encryption at rest) für Storage, Snapshots, Read Replicas und Backups. Schlüssel zur Verwaltung dieser Verschlüsselung können über KMS ausgegeben werden.
Es ist nicht möglich, diese Verschlüsselungsebene hinzuzufügen, nachdem Ihre Datenbank erstellt wurde. Sie muss während der Erstellung konfiguriert werden.
Es gibt jedoch einen Workaround, mit dem Sie eine unverschlüsselte Datenbank wie folgt verschlüsseln können: Sie können einen Snapshot Ihrer unverschlüsselten Datenbank erstellen, eine verschlüsselte Kopie dieses Snapshots anlegen, diesen verschlüsselten Snapshot verwenden, um eine neue Datenbank zu erstellen — damit ist die neue Datenbank verschlüsselt.
Transparent Data Encryption (TDE)
Zusätzlich zu den auf Anwendungsebene vorhandenen Verschlüsselungsfunktionen von RDS unterstützt RDS auch plattformseitige zusätzliche Verschlüsselungsmechanismen, um ruhende Daten 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 ruhender Daten erhöht, aber auch die Datenbankleistung beeinträchtigen kann. Diese Leistungsbeeinträchtigung ist besonders auffällig bei Verwendung in Verbindung mit MySQL-Kryptofunktionen oder Microsoft Transact-SQL-Kryptofunktionen.
Um TDE zu nutzen, sind bestimmte vorbereitende Schritte erforderlich:
- Option Group-Zuordnung:
- Die Datenbank muss einer Option Group zugewiesen sein. Option Groups dienen als Container für Einstellungen und Features, die die Datenbankverwaltung erleichtern, einschließlich Sicherheitsverbesserungen.
- Es ist jedoch wichtig zu beachten, dass Option Groups nur für bestimmte Datenbank-Engines und -Versionen verfügbar sind.
- Aufnahme von TDE in die Option Group:
- Sobald die Datenbank einer Option Group zugewiesen ist, muss die Oracle Transparent Data Encryption-Option in dieser Gruppe enthalten sein.
- Es ist wichtig zu erkennen, dass sobald die TDE-Option zu einer Option Group hinzugefügt wurde, sie dauerhaft ist und nicht entfernt werden kann.
- TDE-Verschlüsselungsmodi:
- TDE bietet zwei verschiedene Verschlüsselungsmodi:
- TDE Tablespace Encryption: Dieser Modus verschlüsselt komplette Tablespaces/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, um Verschlüsselung innerhalb von RDS effektiv zu implementieren und zu verwalten und sowohl Datensicherheit als auch Compliance mit erforderlichen Standards sicherzustellen.
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
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?
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
Nicht authentifizierter Zugriff
AWS - RDS Unauthenticated Enum
Privesc
Post Exploitation
Persistence
SQL Injection
Es gibt Möglichkeiten, auf DynamoDB-Daten mit SQL syntax zuzugreifen; daher sind typische SQL injections ebenfalls möglich.
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud

