AWS - IAM & STS Unauthenticated Enum
Last updated
Last updated
Učite i vežbajte AWS Hacking:HackTricks Obuka AWS Red Team Ekspert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Obuka GCP Red Team Ekspert (GRTE)
Ova tehnika više ne funkcioniše jer, bez obzira na to da li uloga postoji ili ne, uvek dobijate ovu grešku:
Došlo je do greške (AccessDenied) prilikom pozivanja operacije AssumeRole: Korisnik: arn:aws:iam::947247140022:user/testenv nije ovlašćen da izvrši: sts:AssumeRole na resursu: arn:aws:iam::429217632764:role/account-balanceasdas
Možete testirati ovo pokretanjem:
aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example
Pokušaj da pretpostavite ulogu bez potrebnih dozvola izaziva AWS poruku o grešci. Na primer, ako niste ovlašćeni, AWS može vratiti:
Ova poruka potvrđuje postojanje uloge, ali ukazuje da njena politika preuzimanja uloge ne dozvoljava vaše preuzimanje. Nasuprot tome, pokušaj da se preuzme nepostojeća uloga dovodi do druge greške:
Zanimljivo je da je ova metoda razlikovanja između postojećih i nepostojećih uloga primenljiva čak i između različitih AWS naloga. Sa važećim AWS ID-jem naloga i ciljanom listom reči, može se enumerisati uloge prisutne u nalogu bez suočavanja sa bilo kakvim inherentnim ograničenjima.
Možete koristiti ovaj skript za enumeraciju potencijalnih principala zloupotrebljavajući ovaj problem.
Konfigurisanje ili ažuriranje politike poverenja IAM uloge uključuje definisanje koji AWS resursi ili usluge su dozvoljeni da preuzmu tu ulogu i dobiju privremene akreditive. Ako navedeni resurs u politici postoji, politika poverenja se uspešno čuva. Međutim, ako resurs ne postoji, javlja se greška, koja ukazuje da je pružen nevažeći principal.
Imajte na umu da u tom resursu možete navesti cross account ulogu ili korisnika:
arn:aws:iam::acc_id:role/role_name
arn:aws:iam::acc_id:user/user_name
Ovo je primer politike:
To je greška koju ćete pronaći ako koristite ulogu koja ne postoji. Ako uloga postoji, politika će biti sačuvana bez grešaka. (Greška se odnosi na ažuriranje, ali takođe funkcioniše i prilikom kreiranja)
Možete automatizovati ovaj proces sa https://github.com/carlospolop/aws_tools
bash unauth_iam.sh -t user -i 316584767888 -r TestRole -w ./unauth_wordlist.txt
Naš korišćenje Pacu:
run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
Uloga admin
korišćena u primeru je uloga u vašem nalogu koja će biti imitirana od strane pacu da kreira politike koje su mu potrebne za enumeraciju
U slučaju da je uloga loše konfigurisana i omogućava bilo kome da je preuzme:
Napadač bi to mogao samo pretpostaviti.
Zamislite da uspete da pročitate Github Actions workflow koji pristupa rolu unutar AWS. Ova poverenja može omogućiti pristup roli sa sledećom politikom poverenja:
Ova politika poverenja može biti ispravna, ali nedostatak više uslova treba da vas navede da joj ne verujete. To je zato što prethodnu ulogu može preuzeti BILO KO sa Github Actions! Trebalo bi da navedete u uslovima i druge stvari kao što su naziv organizacije, naziv repozitorijuma, okruženje, grana...
Još jedna potencijalna pogrešna konfiguracija je da dodate uslov kao što je sledeći:
Napomena da zvezdica (*) pre dvotačke (:). Možete kreirati organizaciju kao što je org_name1 i pretpostaviti ulogu iz Github akcije.
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)