AWS - IAM Post Exploitation
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 pristupu:
AWS - IAM, Identity Center & SSO Enum
Confused Deputy Problem
Ako dozvolite eksternom nalogu (A) pristup ulogi u vašem nalogu, verovatno ćete imati 0 vidljivosti o tome ko tačno može da pristupi tom eksternom nalogu. Ovo predstavlja problem, jer ako drugi eksterni nalog (B) može da pristupi eksternom nalogu (A), moguće je da B takođe bude u stanju da pristupi vašem nalogu.
Zato, prilikom dozvole eksternom nalogu da pristupi ulozi u vašem nalogu, moguće je navesti ExternalId. To je “tajni” string koji eksterni nalog (A) mora da navede da bi preuzeo ulogu u vašoj organizaciji. Pošto eksterni nalog B neće znati ovaj string, čak i ako ima pristup A on neće moći da pristupi vašoj ulozi.
.png)
Međutim, imajte na umu da ovaj ExternalId “tajna” nije prava tajna — svako ko može da pročita IAM assume role policy moći će je videti. Ali sve dok eksterni nalog A zna taj string, a eksterni nalog B ga ne zna, to sprečava B da zloupotrebi A da bi pristupio vašoj ulozi.
Primer:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}
Warning
Da bi napadač iskoristio confused deputy, mora nekako da utvrdi da li principals iz trenutnog account-a mogu da impersonate roles u drugim account-ima.
Neočekivana poverenja
Wildcard kao principal
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" }
}
Ova politika dozvoljava svim entitetima AWS da preuzmu ulogu.
Servis kao principal
{
"Action": "lambda:InvokeFunction",
"Effect": "Allow",
"Principal": { "Service": "apigateway.amazonaws.com" },
"Resource": "arn:aws:lambda:000000000000:function:foo"
}
Ova politika dozvoljava bilo kojem nalogu da konfiguriše svoj apigateway da pozove ovu Lambda.
S3 kao principal
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
Ako je S3 bucket naveden kao principal — pošto S3 buckets nemaju Account ID — ukoliko ste obrisali svoj bucket, a napadač ga je kreirao u svom nalogu, mogao bi to zloupotrebiti.
Nije podržano
{
"Effect": "Allow",
"Principal": { "Service": "cloudtrail.amazonaws.com" },
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}
Uobičajen način da se izbegnu Confused Deputy problemi je upotreba uslova sa AWS:SourceArn da se proveri ARN izvora. Međutim, neke usluge možda to ne podržavaju (poput CloudTrail prema nekim izvorima).
Brisanje kredencijala
Sa bilo kojom od sledećih dozvola — iam:DeleteAccessKey, iam:DeleteLoginProfile, iam:DeleteSSHPublicKey, iam:DeleteServiceSpecificCredential, iam:DeleteInstanceProfile, iam:DeleteServerCertificate, iam:DeleteCloudFrontPublicKey, iam:RemoveRoleFromInstanceProfile — akter može ukloniti pristupne ključeve, prijavne profile, SSH ključeve, servisno-specifične kredencijale, instance profile, sertifikate ili CloudFront javne ključeve, ili odvojiti role od instance profile-ova. Takve akcije mogu odmah onemogućiti legitimne korisnike i aplikacije i prouzrokovati denial-of-service ili gubitak pristupa za sisteme koji zavise od tih kredencijala, zato ove IAM dozvole moraju biti strogo ograničene i nadgledane.
# Remove Access Key of a user
aws iam delete-access-key \
--user-name <Username> \
--access-key-id AKIAIOSFODNN7EXAMPLE
## Remove ssh key of a user
aws iam delete-ssh-public-key \
--user-name <Username> \
--ssh-public-key-id APKAEIBAERJR2EXAMPLE
Brisanje identiteta
Sa dozvolama kao što su iam:DeleteUser, iam:DeleteGroup, iam:DeleteRole, ili iam:RemoveUserFromGroup, subjekat može obrisati korisnike, role ili grupe — ili promeniti članstvo u grupi — uklanjajući identitete i pripadajuće tragove. Ovo može odmah prekinuti pristup osobama i servisima koji zavise od tih identiteta, izazivajući denial-of-service ili gubitak pristupa, zato ove IAM actions moraju biti strogo ograničene i nadgledane.
# Delete a user
aws iam delete-user \
--user-name <Username>
# Delete a group
aws iam delete-group \
--group-name <Username>
# Delete a role
aws iam delete-role \
--role-name <Role>
Sa bilo kojom od sledećih dozvola — iam:DeleteGroupPolicy, iam:DeleteRolePolicy, iam:DeleteUserPolicy, iam:DeletePolicy, iam:DeletePolicyVersion, iam:DeleteRolePermissionsBoundary, iam:DeleteUserPermissionsBoundary, iam:DetachGroupPolicy, iam:DetachRolePolicy, iam:DetachUserPolicy — akter može obrisati ili odvojiti managed/inline policies, ukloniti verzije politika ili permissions boundaries, i ukloniti povezivanje politika sa korisnicima, grupama ili ulogama. Ovo uništava autorizacije i može promeniti model dozvola, prouzrokujući trenutni gubitak pristupa ili denial-of-service za principals koji su zavisili od tih politika, zato ove IAM akcije moraju biti strogo ograničene i nadgledane.
# Delete a group policy
aws iam delete-group-policy \
--group-name <GroupName> \
--policy-name <PolicyName>
# Delete a role policy
aws iam delete-role-policy \
--role-name <RoleName> \
--policy-name <PolicyName>
Brisanje federisanih identiteta
Korišćenjem iam:DeleteOpenIDConnectProvider, iam:DeleteSAMLProvider i iam:RemoveClientIDFromOpenIDConnectProvider, napadač može obrisati OIDC/SAML provajdere identiteta ili ukloniti client IDs. To prekida federisanu autentifikaciju, onemogućava validaciju tokena i odmah uskraćuje pristup korisnicima i servisima koji se oslanjaju na SSO dok IdP ili konfiguracije ne budu obnovljeni.
# Delete OIDCP provider
aws iam delete-open-id-connect-provider \
--open-id-connect-provider-arn arn:aws:iam::111122223333:oidc-provider/accounts.google.com
# Delete SAML provider
aws iam delete-saml-provider \
--saml-provider-arn arn:aws:iam::111122223333:saml-provider/CorporateADFS
Neovlašćeno aktiviranje MFA
Sa iam:EnableMFADevice, napadač može registrovati MFA uređaj na identitet korisnika, sprečavajući legitimnog korisnika da se prijavi. Kada je omogućen neovlašćeni MFA uređaj, korisnik može biti zaključan sve dok uređaj ne bude uklonjen ili resetovan (napomena: ako je registrovano više MFA uređaja, za prijavu je potreban samo jedan, tako da ovaj napad neće onemogućiti pristup).
aws iam enable-mfa-device \
--user-name <Username> \
--serial-number arn:aws:iam::111122223333:mfa/alice \
--authentication-code1 123456 \
--authentication-code2 789012
Manipulacija metapodacima sertifikata/ključeva
Korišćenjem iam:UpdateSSHPublicKey, iam:UpdateCloudFrontPublicKey, iam:UpdateSigningCertificate, iam:UpdateServerCertificate, napadač može da promeni status ili metapodatke javnih ključeva i sertifikata. Označavanjem ključeva/sertifikata kao neaktivnih ili izmenom referenci, mogu da onemoguće SSH autentifikaciju, ponište X.509/TLS validacije i odmah poremete servise koji zavise od tih kredencijala, prouzrokujući gubitak pristupa ili dostupnosti.
aws iam update-ssh-public-key \
--user-name <Username> \
--ssh-public-key-id APKAEIBAERJR2EXAMPLE \
--status Inactive
aws iam update-server-certificate \
--server-certificate-name <Certificate_Name> \
--new-path /prod/
iam:Delete*
IAM wildcard iam:Delete* dodeljuje mogućnost uklanjanja mnogih vrsta IAM resursa—users, roles, groups, policies, keys, certificates, MFA devices, policy versions, etc. —i stoga ima veoma veliki blast radius: akter kome je dodeljen iam:Delete* može trajno uništiti identitete, kredencijale, politike i povezane artefakte, ukloniti revizijske zapise/dokaze i prouzrokovati prekide usluge ili operativne zastoje. Neki primeri su
# Delete a user
aws iam delete-user --user-name <Username>
# Delete a role
aws iam delete-role --role-name <RoleName>
# Delete a managed policy
aws iam delete-policy --policy-arn arn:aws:iam::<ACCOUNT_ID>:policy/<PolicyName>
iam:EnableMFADevice
Entitet kojem je dodeljena iam:EnableMFADevice akcija može registrovati MFA device na identitetu u nalogu, pod uslovom da user nije već imao omogućen jedan. Ovo se može iskoristiti za ometanje pristupa user‑a: čim attacker registruje MFA device, legitimni user može biti sprečen da se sign in zato što ne kontroliše attacker-registrisani MFA.
Ovaj denial-of-access attack funkcioniše samo ako user nije imao registrovan MFA; ako attacker registruje MFA device za tog user‑a, legitimni user će biti zaključan iz bilo kojih flow‑ova koji zahtevaju taj novi MFA. Ako user već ima jedan ili više MFA devices pod svojom kontrolom, dodavanje attacker‑kontrolisanog MFA ne blokira legitimnog user‑a — on može nastaviti da authenticate koristeći bilo koji MFA koji već poseduje.
To enable (register) an MFA device for a user an attacker could run:
aws iam enable-mfa-device \
--user-name <Username> \
--serial-number arn:aws:iam::111122223333:mfa/alice \
--authentication-code1 123456 \
--authentication-code2 789012
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.
HackTricks Cloud

