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
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
Redshift
Para más información sobre RDS consulta:
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
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

