AWS - STS Privesc

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

STS

sts:AssumeRole

हर भूमिका एक भूमिका ट्रस्ट नीति के साथ बनाई जाती है, यह नीति यह दर्शाती है कि कौन बनाई गई भूमिका को ग्रहण कर सकता है। यदि एक ही खाते से एक भूमिका कहती है कि एक खाता इसे ग्रहण कर सकता है, तो इसका मतलब है कि खाता भूमिका तक पहुँच प्राप्त कर सकेगा (और संभावित रूप से privesc कर सकेगा)।

उदाहरण के लिए, निम्नलिखित भूमिका ट्रस्ट नीति यह दर्शाती है कि कोई भी इसे ग्रहण कर सकता है, इसलिए कोई भी उपयोगकर्ता उस भूमिका से संबंधित अनुमतियों के लिए privesc कर सकेगा

json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole"
}
]
}

आप एक भूमिका का अनुकरण कर सकते हैं:

bash
aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname

संभावित प्रभाव: भूमिका के लिए प्रिवेस्क।

caution

ध्यान दें कि इस मामले में अनुमति sts:AssumeRole को दुरुपयोग करने के लिए भूमिका में संकेतित किया जाना चाहिए और हमलावर की नीति में नहीं।
एक अपवाद के साथ, किसी अन्य खाते से भूमिका को ग्रहण करने के लिए हमलावर खाते को भी भूमिका पर sts:AssumeRole होना चाहिए।

sts:GetFederationToken

इस अनुमति के साथ किसी भी उपयोगकर्ता की नकल करने के लिए क्रेडेंशियल्स उत्पन्न करना संभव है:

bash
aws sts get-federation-token --name <username>

यह अनुमति इस तरह से सुरक्षित रूप से दी जा सकती है कि अन्य उपयोगकर्ताओं की नकल करने का अधिकार न दिया जाए:

json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:GetFederationToken",
"Resource": "arn:aws:sts::947247140022:federated-user/${aws:username}"
}
]
}

sts:AssumeRoleWithSAML

इस भूमिका के साथ एक ट्रस्ट नीति SAML के माध्यम से प्रमाणित उपयोगकर्ताओं को भूमिका का अनुकरण करने की अनुमति देती है।

इस अनुमति के साथ एक ट्रस्ट नीति का उदाहरण है:

json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "OneLogin",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::290594632123:saml-provider/OneLogin"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
}
]
}

क्रेडेंशियल्स उत्पन्न करने के लिए ताकि सामान्य रूप से भूमिका का अनुकरण किया जा सके, आप कुछ इस तरह का उपयोग कर सकते हैं:

bash
aws sts  assume-role-with-saml --role-arn <value> --principal-arn <value>

लेकिन प्रदाताओं के पास इसे आसान बनाने के लिए अपने उपकरण हो सकते हैं, जैसे onelogin-aws-assume-role:

bash
onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600

संभावित प्रभाव: भूमिका के लिए प्रिवेस्क।

sts:AssumeRoleWithWebIdentity

यह अनुमति उन उपयोगकर्ताओं के लिए अस्थायी सुरक्षा क्रेडेंशियल्स प्राप्त करने की अनुमति देती है जो एक वेब पहचान प्रदाता के साथ मोबाइल, वेब एप्लिकेशन, EKS... में प्रमाणित किए गए हैं। यहाँ और जानें।

उदाहरण के लिए, यदि एक EKS सेवा खाता को IAM भूमिका का अनुकरण करने में सक्षम होना चाहिए, तो इसके पास /var/run/secrets/eks.amazonaws.com/serviceaccount/token में एक टोकन होगा और यह भूमिका को ग्रहण कर सकता है और क्रेडेंशियल्स प्राप्त कर सकता है कुछ इस तरह:

bash
aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/<role_name> --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token
# The role name can be found in the metadata of the configuration of the pod

संघीय दुरुपयोग

AWS - Federation Abuse

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