AWS - RDS Privesc
RDS - Relationale Datenbankdienste
Für weitere Informationen zu RDS siehe:
pageAWS - Relational Database (RDS) Enumrds:ModifyDBInstance
rds:ModifyDBInstance
Mit dieser Berechtigung kann ein Angreifer das Passwort des Master-Benutzers ändern und sich in der Datenbank anmelden:
Sie müssen in der Lage sein, eine Verbindung zur Datenbank herzustellen (normalerweise nur aus internen Netzwerken erreichbar).
Potenzielle Auswirkungen: Sensible Informationen in den Datenbanken finden.
rds-db:connect
Gemäß der Dokumentation kann ein Benutzer mit dieser Berechtigung eine Verbindung zur DB-Instanz herstellen.
Missbrauch von RDS-Rollen-IAM-Berechtigungen
Postgresql (Aurora)
Wenn Sie SELECT datname FROM pg_database;
ausführen und eine Datenbank namens rdsadmin
finden, wissen Sie, dass Sie sich in einer AWS-Postgresql-Datenbank befinden.
Zunächst können Sie überprüfen, ob diese Datenbank verwendet wurde, um auf einen anderen AWS-Dienst zuzugreifen. Sie könnten dies überprüfen, indem Sie die installierten Erweiterungen betrachten:
Wenn Sie etwas wie aws_s3
finden, können Sie davon ausgehen, dass diese Datenbank irgendeine Art von Zugriff auf S3 hat (es gibt auch andere Erweiterungen wie aws_ml
und aws_lambda
).
Außerdem, wenn Sie Berechtigungen haben, um aws rds describe-db-clusters
auszuführen, können Sie dort sehen, ob dem Cluster eine IAM-Rolle zugeordnet ist im Feld AssociatedRoles
. Falls ja, können Sie davon ausgehen, dass die Datenbank für den Zugriff auf andere AWS-Services vorbereitet wurde. Basierend auf dem Namen der Rolle (oder wenn Sie die Berechtigungen der Rolle erhalten können), könnten Sie vermuten, welchen zusätzlichen Zugriff die Datenbank hat.
Um nun eine Datei innerhalb eines Buckets zu lesen, müssen Sie den vollständigen Pfad kennen. Sie können sie lesen mit:
Wenn Sie rohe AWS-Anmeldeinformationen haben, könnten Sie sie auch verwenden, um auf S3-Daten zuzugreifen:
Postgresql muss keine Parametergruppenvariable ändern, um auf S3 zugreifen zu können.
Mysql (Aurora)
In einem mysql, wenn Sie die Abfrage SELECT User, Host FROM mysql.user;
ausführen und es einen Benutzer namens rdsadmin
gibt, können Sie davon ausgehen, dass Sie sich in einer AWS RDS mysql db befinden.
Führen Sie im mysql show variables;
aus und wenn die Variablen wie aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
Werte haben, können Sie davon ausgehen, dass die Datenbank darauf vorbereitet ist, auf S3-Daten zuzugreifen.
Außerdem, wenn Sie Berechtigungen haben, um aws rds describe-db-clusters
auszuführen, können Sie überprüfen, ob der Cluster eine zugeordnete Rolle hat, was normalerweise den Zugriff auf AWS-Dienste bedeutet).
Um eine Datei in einem Bucket zu lesen, müssen Sie den vollständigen Pfad kennen. Sie können sie mit:
rds:AddRoleToDBCluster
, iam:PassRole
rds:AddRoleToDBCluster
, iam:PassRole
Ein Angreifer mit den Berechtigungen rds:AddRoleToDBCluster
und iam:PassRole
kann eine bestimmte Rolle zu einer vorhandenen RDS-Instanz hinzufügen. Dies könnte es dem Angreifer ermöglichen, auf sensible Daten zuzugreifen oder die Daten innerhalb der Instanz zu modifizieren.
Potenzielle Auswirkungen: Zugriff auf sensible Daten oder unbefugte Änderungen an den Daten in der RDS-Instanz. Beachten Sie, dass einige DBs zusätzliche Konfigurationen erfordern, wie z. B. Mysql, bei dem die Rollen-ARN in den Parametergruppen angegeben werden müssen.
rds:CreateDBInstance
rds:CreateDBInstance
Nur mit dieser Berechtigung könnte ein Angreifer eine neue Instanz innerhalb eines bereits vorhandenen Clusters erstellen, die über eine IAM-Rolle verfügt. Er wird das Master-Benutzerpasswort nicht ändern können, aber er könnte die neue Datenbankinstanz möglicherweise dem Internet aussetzen:
rds:CreateDBInstance
, iam:PassRole
rds:CreateDBInstance
, iam:PassRole
TODO: Test
Ein Angreifer mit den Berechtigungen rds:CreateDBInstance
und iam:PassRole
kann eine neue RDS-Instanz mit einer spezifischen Rolle erstellen, die angehängt ist. Der Angreifer kann dann potenziell auf sensible Daten zugreifen oder die Daten innerhalb der Instanz ändern.
Einige Anforderungen an die Rolle/das Instanzprofil, die angehängt werden müssen (von hier):
Das Profil muss in Ihrem Konto existieren.
Das Profil muss eine IAM-Rolle haben, die von Amazon EC2 angenommen werden darf.
Der Name des Instanzprofils und der zugehörige IAM-Rollenname müssen mit dem Präfix
AWSRDSCustom
beginnen.
Potenzielle Auswirkungen: Zugriff auf sensible Daten oder nicht autorisierte Änderungen an den Daten in der RDS-Instanz.
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
, iam:PassRole
Ein Angreifer mit den Berechtigungen rds:AddRoleToDBInstance
und iam:PassRole
kann eine bestimmte Rolle zu einer vorhandenen RDS-Instanz hinzufügen. Dies könnte es dem Angreifer ermöglichen, auf sensible Daten zuzugreifen oder die Daten innerhalb der Instanz zu ändern.
Die DB-Instanz muss außerhalb eines Clusters liegen, damit dies funktioniert.
Potenzielle Auswirkungen: Zugriff auf sensible Daten oder unbefugte Änderungen an den Daten in der RDS-Instanz.
Last updated