Az - OAuth Apps Phishing

Reading time: 8 minutes

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

OAuth App Phishing

Azure aplikacije su konfigurisane sa dozvolama koje će moći da koriste kada korisnik da saglasnost aplikaciji (kao što je enumeracija direktorijuma, pristup datotekama ili izvršavanje drugih radnji). Imajte na umu da aplikacija deluje u ime korisnika, tako da čak i ako aplikacija može tražiti administratorske dozvole, ako korisnik koji daje saglasnost nema tu dozvolu, aplikacija neće moći da izvršava administratorske radnje.

Dozvole za saglasnost aplikacije

Podrazumevano, svaki korisnik može dati saglasnost aplikacijama, iako se ovo može konfigurisati tako da korisnici mogu dati saglasnost samo za aplikacije od verifikovanih izdavača za odabrane dozvole ili čak ukloniti dozvolu korisnicima da daju saglasnost aplikacijama.

Ako korisnici ne mogu dati saglasnost, administratori kao što su GA, Application Administrator ili Cloud Application Administrator mogu dati saglasnost aplikacijama koje korisnici mogu koristiti.

Pored toga, ako korisnici mogu dati saglasnost samo za aplikacije koje koriste niskorizične dozvole, ove dozvole su podrazumevano openid, profile, email, User.Read i offline_access, iako je moguće dodati više na ovu listu.

I ako mogu dati saglasnost za sve aplikacije, mogu dati saglasnost za sve aplikacije.

2 Tipova napada

  • Neautentifikovani: Iz spoljnog naloga kreirati aplikaciju sa niskorizičnim dozvolama User.Read i User.ReadBasic.All, na primer, phishing korisnika, i moći ćete da pristupite informacijama iz direktorijuma.
  • Ovo zahteva da phished korisnik bude u mogućnosti da prihvati OAuth aplikacije iz spoljnog tenanta.
  • Ako je phished korisnik neki administrator koji može dati saglasnost bilo kojoj aplikaciji sa bilo kojim dozvolama, aplikacija bi takođe mogla tražiti privilegovane dozvole.
  • Autentifikovani: Nakon što je kompromitovan glavni korisnik sa dovoljno privilegija, kreirati aplikaciju unutar naloga i phish nekog privilegovano korisnika koji može prihvatiti privilegovane OAuth dozvole.
  • U ovom slučaju već možete pristupiti informacijama iz direktorijuma, tako da dozvola User.ReadBasic.All više nije zanimljiva.
  • Verovatno ste zainteresovani za dozvole koje zahtevaju da ih administrator odobri, jer običan korisnik ne može dati OAuth aplikacijama bilo koju dozvolu, zato treba da phishujete samo te korisnike (više o tome koje uloge/dozvole daju ovu privilegiju kasnije).

Korisnicima je dozvoljeno da daju saglasnost

Imajte na umu da morate izvršiti ovu komandu iz korisnika unutar tenanta, ne možete pronaći ovu konfiguraciju tenanta iz spoljnog. Sledeća CLI može vam pomoći da razumete dozvole korisnika:

bash
az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/authorizationPolicy"
  • Korisnici mogu da daju saglasnost za sve aplikacije: Ako unutar permissionGrantPoliciesAssigned pronađete: ManagePermissionGrantsForSelf.microsoft-user-default-legacy tada korisnici mogu da prihvate svaku aplikaciju.
  • Korisnici mogu da daju saglasnost za aplikacije od verifikovanih izdavača ili vaše organizacije, ali samo za dozvole koje odaberete: Ako unutar permissionGrantPoliciesAssigned pronađete: ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team tada korisnici mogu da prihvate svaku aplikaciju.
  • Onemogućite saglasnost korisnika: Ako unutar permissionGrantPoliciesAssigned možete pronaći samo: ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-chat i ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team tada korisnici ne mogu dati saglasnost.

Moguće je pronaći značenje svake od komentarisane politika u:

bash
az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies"

Administratori aplikacija

Proverite korisnike koji se smatraju administratorima aplikacija (mogu prihvatiti nove aplikacije):

bash
# Get list of roles
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles"

# Get Global Administrators
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1b2256f9-46c1-4fc2-a125-5b2f51bb43b7/members"

# Get Application Administrators
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1e92c3b7-2363-4826-93a6-7f7a5b53e7f9/members"

# Get Cloud Applications Administrators
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d601d27-7b9c-476f-8134-8e7cd6744f02/members"

Pregled Tokova Napada

Napad se sastoji od nekoliko koraka koji ciljaju generičku kompaniju. Evo kako bi to moglo izgledati:

  1. Registracija Domen i Hosting Aplikacije: Napadač registruje domen koji podseća na pouzdanu stranicu, na primer, "safedomainlogin.com". Pod ovim domenom se kreira poddomen (npr., "companyname.safedomainlogin.com") za hosting aplikacije dizajnirane da hvata autorizacione kodove i zahteva pristupne tokene.
  2. Registracija Aplikacije u Azure AD: Napadač zatim registruje Multi-Tenant Aplikaciju u svom Azure AD Tenantu, nazivajući je po ciljanom preduzeću kako bi izgledala legitimno. Konfiguriše URL za preusmeravanje aplikacije da upućuje na poddomen koji hostuje zlonamernu aplikaciju.
  3. Postavljanje Dozvola: Napadač postavlja aplikaciju sa raznim API dozvolama (npr., Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read). Ove dozvole, kada ih korisnik odobri, omogućavaju napadaču da izvuče osetljive informacije u ime korisnika.
  4. Distribucija Zlonamernih Linkova: Napadač kreira link koji sadrži ID klijenta zlonamerne aplikacije i deli ga sa ciljnim korisnicima, obmanjujući ih da daju saglasnost.

Primer Napada

  1. Registrujte novu aplikaciju. Može biti samo za trenutni direktorijum ako koristite korisnika iz napadnutog direktorijuma ili za bilo koji direktorijum ako je ovo spoljašnji napad (kao na sledećoj slici).
  2. Takođe postavite redirect URI na očekivani URL gde želite da primite kod za dobijanje tokena (http://localhost:8000/callback po defaultu).
  1. Zatim kreirajte tajnu aplikacije:
  1. Izaberite API dozvole (npr. Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read)
  1. Izvršite veb stranicu (azure_oauth_phishing_example) koja traži dozvole:
bash
# From https://github.com/carlospolop/azure_oauth_phishing_example
python3 azure_oauth_phishing_example.py --client-secret <client-secret> --client-id <client-id> --scopes "email,Files.ReadWrite.All,Mail.Read,Notes.Read.All,offline_access,openid,profile,User.Read"
  1. Pošaljite URL žrtvi
  2. U ovom slučaju http://localhost:8000
  3. Žrtve treba da prihvate obaveštenje:
  1. Koristite pristupni token za pristup traženim dozvolama:
bash
export ACCESS_TOKEN=<ACCESS_TOKEN>

# List drive files
curl -X GET \
https://graph.microsoft.com/v1.0/me/drive/root/children \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"

# List eails
curl -X GET \
https://graph.microsoft.com/v1.0/me/messages \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"

# List notes
curl -X GET \
https://graph.microsoft.com/v1.0/me/onenote/notebooks \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"

Ostali alati

Post-eksploatacija

Phishing post-eksploatacija

U zavisnosti od traženih dozvola, možda ćete moći da pristupite različitim podacima zakupca (lista korisnika, grupa... ili čak da modifikujete podešavanja) i informacijama o korisniku (fajlovi, beleške, e-mailovi...). Tada možete iskoristiti te dozvole da izvršite te radnje.

Entra ID aplikacije admin

Ako ste uspeli da kompromitujete nekako Entra ID principal koji može da upravlja aplikacijama u Entra ID, i postoje aplikacije koje koriste korisnici zakupca. Administrator bi mogao da modifikuje dozvole koje aplikacija traži i doda novu dozvoljenu adresu za preusmeravanje da bi ukrao tokene.

  • Imajte na umu da je moguće dodati redirect URIs (nije potrebno brisati pravu) i zatim poslati HTTP link koristeći napadačev redirect URI, tako da kada korisnik prati link, autentifikacija se automatski dešava i napadač prima token.
  • Takođe je moguće promeniti dozvole koje aplikacija traži kako bi dobila više dozvola od korisnika, ali u tom slučaju korisnik će morati da ponovo prihvati prompt (čak i ako je već bio prijavljen).
  • Da bi izveo ovaj napad, napadač NE TREBA da kontroliše kod aplikacije jer može jednostavno poslati link za prijavu u aplikaciju korisniku sa novim URL-om u redirect_uri parametru.

Post-eksploatacija aplikacije

Proverite sekcije Aplikacije i Servisni Principal na stranici:

Az - EntraID Privesc

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