Az - Tokens & Public Applications
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Entra ID je Microsoftova platforma za upravljanje identitetima i pristupom (IAM) zasnovana na oblaku, koja služi kao osnovni sistem za autentifikaciju i autorizaciju za usluge kao što su Microsoft 365 i Azure Resource Manager. Azure AD implementira OAuth 2.0 okvir autorizacije i OpenID Connect (OIDC) protokol autentifikacije za upravljanje pristupom resursima.
Ključni učesnici u OAuth 2.0:
Server resursa (RS): Štiti resurse koje poseduje vlasnik resursa.
Vlasnik resursa (RO): Obično krajnji korisnik koji poseduje zaštićene resurse.
Klijentska aplikacija (CA): Aplikacija koja traži pristup resursima u ime vlasnika resursa.
Server autorizacije (AS): Izdaje pristupne tokene klijentskim aplikacijama nakon autentifikacije i autorizacije.
Opsezi i saglasnost:
Opsezi: Granularne dozvole definisane na serveru resursa koje specificiraju nivoe pristupa.
Saglasnost: Proces kojim vlasnik resursa daje klijentskoj aplikaciji dozvolu za pristup resursima sa specifičnim opsezima.
Integracija sa Microsoft 365:
Microsoft 365 koristi Azure AD za IAM i sastoji se od više "prvih strana" OAuth aplikacija.
Ove aplikacije su duboko integrisane i često imaju međuzavisne odnose usluga.
Da bi se pojednostavilo korisničko iskustvo i održala funkcionalnost, Microsoft daje "implicitnu saglasnost" ili "pre-saglasnost" ovim aplikacijama prve strane.
Implicitna saglasnost: Određene aplikacije automatski dobijaju pristup specifičnim opsezima bez eksplicitnog odobrenja korisnika ili administratora.
Ovi pre-saglašeni opsezi su obično skriveni od korisnika i administratora, čineći ih manje vidljivim u standardnim upravljačkim interfejsima.
Tipovi klijentskih aplikacija:
Poverljivi klijenti:
Imaju svoje sopstvene akreditive (npr. lozinke ili sertifikate).
Mogu sigurno da se autentifikuju na serveru autorizacije.
Javni klijenti:
Nemaju jedinstvene akreditive.
Ne mogu sigurno da se autentifikuju na serveru autorizacije.
Bezbednosna implikacija: Napadač može da se pretvara da je javna klijentska aplikacija prilikom traženja tokena, jer ne postoji mehanizam za server autorizacije da verifikuje legitimnost aplikacije.
Postoje tri tipa tokena koji se koriste u OIDC:
Pristupni tokeni: Klijent predstavlja ovaj token serveru resursa da pristupi resursima. Može se koristiti samo za specifičnu kombinaciju korisnika, klijenta i resursa i ne može biti opozvan do isteka - što je podrazumevano 1 sat.
ID tokeni: Klijent prima ovaj token od servera autorizacije. Sadrži osnovne informacije o korisniku. Povezan je sa specifičnom kombinacijom korisnika i klijenta.
Refresh tokeni: Dodeljuju se klijentu zajedno sa pristupnim tokenom. Koriste se za dobijanje novih pristupnih i ID tokena. Povezani su sa specifičnom kombinacijom korisnika i klijenta i mogu biti opozvani. Podrazumevano vreme isteka je 90 dana za neaktivne refresh tokene i nema isteka za aktivne tokene (iz refresh tokena je moguće dobiti nove refresh tokene).
Refresh token bi trebao biti vezan za aud
, za neke opsege, i za tenanta i trebao bi moći da generiše pristupne tokene samo za taj aud, opsege (i ništa više) i tenant. Međutim, to nije slučaj sa FOCI aplikacijama tokena.
Refresh token je enkriptovan i samo Microsoft može da ga dekriptuje.
Dobijanje novog refresh tokena ne opoziva prethodni refresh token.
Informacije za uslovni pristup su smeštene unutar JWT. Dakle, ako zatražite token sa dozvoljene IP adrese, ta IP će biti smeštena u tokenu i tada možete koristiti taj token sa nedozvoljene IP adrese za pristup resursima.
Polje označeno u "aud" polju je server resursa (aplikacija) koji se koristi za obavljanje prijave.
Komanda az account get-access-token --resource-type [...]
podržava sledeće tipove i svaki od njih će dodati specifičan "aud" u rezultantnom pristupnom tokenu:
Napomena da su sledeće samo API-jevi podržani od strane az account get-access-token
, ali ih ima više.
Opseg pristupnog tokena se čuva unutar scp ključa unutar JWT pristupnog tokena. Ovi opsezi definišu šta pristupni token može da pristupi.
Ako je JWT dozvoljeno da kontaktira određeni API, ali nema opseg za izvršenje tražene radnje, neće moći da izvrši radnju sa tim JWT-om.
Prethodno je pomenuto da bi refresh tokeni trebali biti vezani za scopes sa kojima su generisani, za aplikaciju i tenant za koji su generisani. Ako se bilo koja od ovih granica prekine, moguće je eskalirati privilegije jer će biti moguće generisati access tokene za druge resurse i tenante kojima korisnik ima pristup i sa više scopes nego što je prvobitno predviđeno.
Štaviše, to je moguće sa svim refresh tokenima u Microsoft identity platform (Microsoft Entra računi, Microsoft lični računi i društveni računi kao što su Facebook i Google) jer, kao što dokumentacija pominje: "Refresh tokeni su vezani za kombinaciju korisnika i klijenta, ali nisu vezani za resurs ili tenant. Klijent može koristiti refresh token da dobije access tokene kroz bilo koju kombinaciju resursa i tenanta gde ima dozvolu da to uradi. Refresh tokeni su enkriptovani i samo Microsoft identity platform može da ih pročita."
Takođe, imajte na umu da su FOCI aplikacije javne aplikacije, tako da nije potreban nikakav tajni ključ za autentifikaciju na serveru.
Poznati FOCI klijenti prijavljeni u originalnom istraživanju mogu se pronaći ovde.
U skladu sa prethodnim primerom koda, u ovom kodu se traži novi token za različiti scope:
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)