AWS - STS Privesc

Support HackTricks

STS

sts:AssumeRole

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

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

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

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

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

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

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

sts:GetFederationToken

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

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

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

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

sts:AssumeRoleWithSAML

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

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

{
"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"
}
}
}
]
}

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

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

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

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 में एक टोकन होगा और यह भूमिका को ग्रहण कर सकता है और क्रेडेंशियल्स प्राप्त कर सकता है कुछ इस तरह:

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

संघटन दुरुपयोग

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

Last updated