AWS - IAM Post Exploitation

Support HackTricks

IAM

IAM एक्सेस के बारे में अधिक जानकारी के लिए:

AWS - IAM, Identity Center & SSO Enum

Confused Deputy Problem

यदि आप एक बाहरी खाता (A) को अपने खाते में एक भूमिका तक पहुँचने की अनुमति देते हैं, तो आपके पास यह जानने की कोई दृश्यता नहीं होगी कि कौन वास्तव में उस बाहरी खाते तक पहुँच सकता है। यह एक समस्या है, क्योंकि यदि एक और बाहरी खाता (B) बाहरी खाते (A) तक पहुँच सकता है, तो यह संभव है कि B आपके खाते तक भी पहुँच सके

इसलिए, जब आप एक बाहरी खाते को अपने खाते में एक भूमिका तक पहुँचने की अनुमति देते हैं, तो आप एक ExternalId निर्दिष्ट कर सकते हैं। यह एक "गुप्त" स्ट्रिंग है जिसे बाहरी खाते (A) को आपके संगठन में भूमिका ग्रहण करने के लिए निर्दिष्ट करना आवश्यक है। चूंकि बाहरी खाता B इस स्ट्रिंग को नहीं जानता, भले ही उसके पास A पर पहुँच हो, वह आपकी भूमिका तक पहुँच नहीं सकेगा

हालांकि, ध्यान दें कि यह ExternalId "गुप्त" गुप्त नहीं है, कोई भी जो IAM भूमिका ग्रहण नीति को पढ़ सकता है, उसे देख सकेगा। लेकिन जब तक बाहरी खाता A इसे जानता है, लेकिन बाहरी खाता B इसे नहीं जानता, यह B को A का दुरुपयोग करके आपकी भूमिका तक पहुँचने से रोकता है

Example:

{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}

एक हमलावर को एक भ्रमित डिप्टी का लाभ उठाने के लिए यह पता लगाना होगा कि क्या वर्तमान खाते के प्रिंसिपल अन्य खातों में भूमिकाओं का अनुकरण कर सकते हैं।

अप्रत्याशित ट्रस्ट

प्रिंसिपल के रूप में वाइल्डकार्ड

{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" },
}

यह नीति सभी AWS को भूमिका ग्रहण करने की अनुमति देती है।

सेवा के रूप में प्रमुख

{
"Action": "lambda:InvokeFunction",
"Effect": "Allow",
"Principal": { "Service": "apigateway.amazonaws.com" },
"Resource": "arn:aws:lambda:000000000000:function:foo"
}

यह नीति किसी भी खाते को अपने apigateway को इस Lambda को कॉल करने के लिए कॉन्फ़िगर करने की अनुमति देती है।

S3 को प्रमुख के रूप में

"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}

यदि S3 बकेट को एक प्रिंसिपल के रूप में दिया गया है, क्योंकि S3 बकेट का कोई खाता आईडी नहीं होता है, यदि आपने अपना बकेट हटा दिया और हमलावर ने इसे अपने खाते में बनाया, तो वे इसका दुरुपयोग कर सकते हैं।

समर्थित नहीं

{
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}

एक सामान्य तरीका Confused Deputy समस्याओं से बचने का AWS:SourceArn के साथ एक शर्त का उपयोग करना है ताकि मूल ARN की जांच की जा सके। हालांकि, कुछ सेवाएँ इसका समर्थन नहीं कर सकती हैं (जैसे कि कुछ स्रोतों के अनुसार CloudTrail)।

संदर्भ

HackTricks का समर्थन करें

Last updated