Files
hacktricks-cloud/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md

4.6 KiB
Raw Blame History

AWS - Redshift Privesc

{{#include ../../../banners/hacktricks-training.md}}

Redshift

Vir meer inligting oor RDS, kyk:

{{#ref}} ../aws-services/aws-redshift-enum.md {{#endref}}

redshift:DescribeClusters, redshift:GetClusterCredentials

Met hierdie toestemmings kan jy inligting van al die klusters verkry (insluitend naam en kluster gebruikersnaam) en kredensiale kry om toegang te verkry:

# 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

Potensiële Impak: Vind sensitiewe inligting binne die databasisse.

redshift:DescribeClusters, redshift:GetClusterCredentialsWithIAM

Met hierdie toestemmings kan jy inligting van al die klusters verkry en kredensiale kry om toegang te verkry.
Let daarop dat die postgres gebruiker die toestemmings wat die IAM identiteit wat gebruik is om die kredensiale te verkry, sal hê.

# 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

Potensiële Impak: Vind sensitiewe inligting binne die databasisse.

redshift:DescribeClusters, redshift:ModifyCluster?

Dit is moontlik om die hoof wagwoord van die interne postgres (redshit) gebruiker vanaf aws cli te wysig (Ek dink dit is die regte toestemmings wat jy nodig het, maar ek het dit nog nie getoets nie):

aws redshift modify-cluster cluster-identifier <identifier-for-the cluster> master-user-password master-password;

Potensiële Impak: Vind sensitiewe inligting binne die databasisse.

Toegang tot Eksterne Dienste

Warning

Om toegang te verkry tot al die volgende hulpbronne, sal jy die rol wat gebruik moet word moet specifiseer. 'n Redshift-kluster kan 'n lys van AWS-rolle toegeken hê wat jy kan gebruik as jy die ARN ken of jy kan net "default" stel om die standaard een te gebruik.

Boonop, soos hier verduidelik, laat Redshift ook toe om rolle te concat (solank die eerste een die tweede een kan aanvaar) om verdere toegang te verkry, maar net deur hulle met 'n komma te skei: iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Lambdas

Soos verduidelik in https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html, is dit moontlik om 'n lambda-funksie vanaf redshift aan te roep met iets soos:

CREATE EXTERNAL FUNCTION exfunc_sum2(INT,INT)
RETURNS INT
STABLE
LAMBDA 'lambda_function'
IAM_ROLE default;

S3

Soos verduidelik in https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html, is dit moontlik om te lees en te skryf in S3-buckets:

# 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

Soos verduidelik in https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html, is dit moontlik om data van dynamodb te verkry:

copy favoritemovies
from 'dynamodb://ProductCatalog'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Warning

Die Amazon DynamoDB tabel wat die data verskaf, moet in dieselfde AWS Region as jou kluster geskep word, tensy jy die REGION opsie gebruik om die AWS Region aan te dui waarin die Amazon DynamoDB tabel geleë is.

EMR

Kontroleer https://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-emr.html

References

{{#include ../../../banners/hacktricks-training.md}}