AWS - IAM & STS Unauthenticated Enum
Nabrojavanje uloga i korisničkih imena u nalogu
Pretpostavljeno Brute-Force Uloga
Ova tehnika više ne funkcioniše jer bez obzira da li uloga postoji ili ne uvek dobijate ovu grešku:
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::947247140022:user/testenv is not authorized to perform: sts:AssumeRole on resource: 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 pretpostavljanja uloge bez neophodnih dozvola pokreće AWS poruku o grešci. Na primer, ako niste ovlašćeni, AWS može vratiti:
Ova poruka potvrđuje postojanje uloge, ali ukazuje da njen politika preuzimanja uloge ne dozvoljava vaše pretpostavljanje. Nasuprot tome, pokušaj pretpostavljanja nepostojeće uloge dovodi do drugačije greške:
Interesantno je da je ovaj metod razlikovanja između postojećih i nepostojećih uloga primenljiv čak i preko različitih AWS naloga. Sa važećim AWS ID-jem naloga i ciljnom listom reči, moguće je 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.
Povereničke politike: Brute-Force Cross Account uloge i korisnike
Konfigurisanje ili ažuriranje povereničke politike IAM uloge podrazumeva definisanje koje AWS resurse ili usluge su dozvoljene da preuzmu tu ulogu i dobiju privremene akreditive. Ako navedeni resurs u politici postoji, poverenička politika se sačuva uspešno. Međutim, ako resurs ne postoji, generiše se greška, koja ukazuje da je pružen nevažeći princip.
Imajte na umu da u tom resursu možete navesti prekograničnu ulogu ili korisnika:
arn:aws:iam::acc_id:role/role_name
arn:aws:iam::acc_id:user/user_name
Ovo je primer politike:
Grafički korisnički interfejs
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 je za ažuriranje, ali takođe radi prilikom kreiranja)
Komandna linija
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ša upotreba 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
U primeru, uloga
admin
je uloga u vašem nalogu koju će pacu impersonirati kako bi kreirao politike koje su mu potrebne za enumeraciju
Privesc
U slučaju da je uloga loše konfigurisana i dozvoljava bilo kome da je preuzme:
Napadač bi to mogao samo pretpostaviti.
Federacija treće strane OIDC
Zamislite da uspete da pročitate Github Actions workflow koji pristupa ulogi unutar AWS-a. Ovo poverenje može omogućiti pristup ulozi sa sledećom politikom poverenja:
Ova politika poverenja može biti ispravna, ali nedostatak dodatnih uslova trebao bi vas učiniti sumnjičavim. To je zato što prethodnu ulogu može preuzeti BILO KO iz Github akcija! Trebali biste specificirati i druge stvari u uslovima kao što su naziv org, naziv repozitorijuma, okruženje, grana...
Još jedna potencijalna greška u konfiguraciji je dodavanje uslova poput sledećeg:
Napomena da zvezdica (*) pre dvotačke (:). Možete kreirati org kao što je org_name1 i pretpostaviti ulogu iz Github akcije.
Reference
Last updated