AWS - Redshift Privesc

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Redshift

Vir meer inligting oor RDS kyk:

pageAWS - Redshift Enum

redshift:DescribeClusters, redshift:GetClusterCredentials

Met hierdie toestemmings kan jy inligting van al die groepe kry (insluitend naam en groep gebruikersnaam) en geloofsbriewe kry om toegang daartoe 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 regte kan jy inligting van al die groepe kry en geloofsbriewe kry om toegang daartoe te verkry. Let daarop dat die postgres-gebruiker die regte sal hê wat die IAM-identiteit wat gebruik is om die geloofsbriewe te kry, het.

# 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:BeskryfClusters, redshift:WysigCluster?

Dit is moontlik om die hoofwagwoord van die interne postgres (redshit) gebruiker te wysig vanaf aws cli (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

Om toegang te verkry tot al die volgende bronne, sal jy die rol wat gebruik moet word, moet spesifiseer. 'n Redshift-kluster kan 'n lys van AWS-rolle toegewys kry wat jy kan gebruik as jy die ARN weet of jy kan net "default" instel om die standaard een te gebruik.

Verder, soos hier verduidelik, staan Redshift ook toe om rolle te kombineer (solang die eerste een die tweede kan aanneem) om verdere toegang te verkry deur hulle net 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 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 skryf na S3 emmers:

# 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 kry:

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

Die Amazon DynamoDB-tabel wat die data verskaf, moet geskep word in dieselfde AWS-streek as jou groep tensy jy die REGION opsie gebruik om die AWS-streek te spesifiseer waarin die Amazon DynamoDB-tabel geleë is.

EMR

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

Verwysings

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated