6.3 KiB
AWS - STS Privesc
{{#include ../../../banners/hacktricks-training.md}}
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
संभावित प्रभाव: भूमिका के लिए प्रिवेस्क।
Caution
ध्यान दें कि इस मामले में अनुमति
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
संघीय दुरुपयोग
{{#ref}} ../aws-basic-information/aws-federation-abuse.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}