Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Azure-APIM-Cross-Tenant-Signup-Bypass — Aviso de seguridad: Azure APIM Developer Portal permite el registro de cuentas entre inquilinos al eludir las restricciones de registro de la interfaz de usuario. Reportado a MSRC dos veces - cerrado como «por diseño». | Kitploit
Herramientas/GitHubGitHub/bountyyfi/azure-apim-cross-tenant-signup-bypass
ReconocimientoAnálisis de VulnerabilidadesExplotación de Aplicaciones WebRecopilación de InformaciónSeguridad en la NubeMala ConfiguraciónSeguridad de APIs
GitHubbountyyfi/azure-apim-cross-tenant-signup-bypass

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →

Azure-APIM-Cross-Tenant-Signup-Bypass

Aviso de seguridad: Azure APIM Developer Portal permite el registro de cuentas entre inquilinos al eludir las restricciones de registro de la interfaz de usuario. Reportado a MSRC dos veces - cerrado como «por diseño».

Ver Repositorio
1613hace 2 mesesAún no revisado
Compartir

Bypass de registro entre inquilinos de Azure APIM

Estado (01.12.2025): Esta vulnerabilidad sigue activa y explotable. Microsoft no ha corregido este problema y lo considera «por diseño».

Aviso de seguridad

GHSA-vcwf-73jp-r7mv

CVE-2025-66390

Resumen

Una vulnerabilidad de seguridad en el portal para desarrolladores de Azure API Management (APIM) permite a los atacantes registrar cuentas en cualquier instancia de APIM que tenga habilitada la autenticación básica, incluso cuando los administradores han deshabilitado el registro de usuarios en la interfaz del portal.

Este bypass permite la creación de cuentas entre inquilinos, lo que potencialmente permite el acceso no autorizado a la documentación de las API, las claves de suscripción y otros recursos expuestos a través del portal para desarrolladores.

Cronología de divulgación

FechaAcción
2025-09-30Vulnerabilidad descubierta
2025-09-30Informe inicial enviado a MSRC
2025-10-30Respuesta de MSRC: cerrado como «no es una vulnerabilidad»
2025-11-01Segundo informe enviado a MSRC con detalles adicionales
2025-11-20Respuesta de MSRC: cerrado como «por diseño»
2025-11-20Notificado a CERT-FI
2025-11-26Divulgación pública
2025-11-27CVE solicitado a MITRE
2026-07-09CVE-2025-66390 asignado por MITRE TL-Root/CNA-LR

Detalles de la vulnerabilidad

El problema

Cuando Azure APIM está configurado con autenticación básica para el portal para desarrolladores, los administradores pueden deshabilitar el registro de usuarios a través de la interfaz de Azure Portal. Sin embargo, esto solo oculta el formulario de registro en la interfaz del portal.

El endpoint subyacente de la API de registro permanece activo y acepta solicitudes de registro directamente, omitiendo por completo la restricción de la interfaz.

Causa raíz

Dos problemas se combinan para crear esta vulnerabilidad:

  1. Restricción solo a nivel de interfaz: deshabilitar el registro solo oculta el formulario en la interfaz del portal. La API de registro del backend permanece activa y accesible.
  2. Sin validación de inquilino: la API de registro no valida que la solicitud se origine desde el portal del mismo inquilino. Se pueden crear solicitudes desde cualquier origen para registrarse en cualquier instancia vulnerable.

Vector de ataque

El ataque requiere dos instancias de APIM:

  1. Instancia del atacante: cualquier portal para desarrolladores de APIM con el registro habilitado (o la propia instancia de APIM del atacante)
  2. Instancia objetivo: el portal para desarrolladores de APIM de la víctima con el registro «deshabilitado» en la interfaz, pero con la autenticación básica aún configurada

Pasos:

  1. El atacante accede a la página de registro de su propio portal para desarrolladores de APIM (donde el registro está habilitado)
  2. El atacante rellena el formulario de registro e intercepta la solicitud (p. ej., usando Burp Suite)
  3. El atacante cambia la cabecera Host de su instancia a la instancia objetivo
  4. El atacante envía la solicitud modificada
  5. La cuenta se crea en la instancia objetivo a pesar de que el registro está «deshabilitado» en la consola de administración
  6. El atacante obtiene acceso al portal para desarrolladores objetivo como usuario registrado

Detalle técnico clave: el bypass entre inquilinos funciona manipulando la cabecera Host en la solicitud POST de registro. El endpoint /signup procesa las solicitudes basándose en la cabecera Host sin validar los límites entre inquilinos.

Ejemplo de manipulación de solicitud:

root@kitploit:~
POST /signup HTTP/1.1
Host: target-apim.developer.azure-api.net   <-- Changed from attacker's instance
Origin: https://attacker-apim.developer.azure-api.net
Content-Type: application/json

{"challenge":{...},"signupData":{"email":"[email protected]",...}}

El problema principal: deshabilitar el registro en la interfaz no deshabilita la API subyacente. El endpoint de la API acepta solicitudes entre inquilinos basándose en la cabecera Host.

Impacto

  • Creación de cuentas entre inquilinos: registrarse en cualquier instancia de APIM con autenticación básica habilitada
  • Bypass de los controles administrativos: las restricciones de registro son ineficaces
  • Acceso a la documentación de las API, que puede contener información interna sensible
  • Posibilidad de solicitar claves de suscripción de API según la configuración del portal
  • Exposición de portales internos: los atacantes externos pueden registrarse en portales «internos»

Configuraciones afectadas

Tu instancia de APIM es vulnerable si:

  • El proveedor de identidad de autenticación básica está configurado (incluso si el registro está «deshabilitado» en la interfaz)
  • El portal para desarrolladores está implementado y es accesible

Tu instancia de APIM NO es vulnerable si:

  • El proveedor de identidad de autenticación básica se ha eliminado por completo (no solo el registro deshabilitado)
  • Solo está configurada la autenticación de Azure AD / OAuth
  • El portal para desarrolladores no está implementado o está deshabilitado

Punto clave: deshabilitar el registro en la interfaz de Azure Portal NO es suficiente. El proveedor de identidad de autenticación básica debe eliminarse por completo para prevenir el bypass de registro entre inquilinos.

Propiedades de recursos de Azure

Usa estos valores de propiedad para identificar instancias de APIM vulnerables mediante Azure Resource Graph, plantillas ARM o Azure Policy.

Propiedades de configuración vulnerables

Comprobación del proveedor de identidad (subrecurso)

El proveedor de identidad de autenticación básica es un recurso independiente dentro de la instancia de APIM:

root@kitploit:~
Resource Type: Microsoft.ApiManagement/service/identityProviders
Name: basic

Vulnerable si existe: la presencia de un recurso de proveedor de identidad basic indica que la autenticación básica está configurada.

Configuración de registro del portal (subrecurso)

root@kitploit:~
Resource Type: Microsoft.ApiManagement/service/portalsettings/signup
Property: properties.enabled
PropiedadValorSignificado
properties.enabledtrueRegistro visible en la interfaz
properties.enabledfalseRegistro oculto en la interfaz (¡la API sigue funcionando si existe autenticación básica!)

Consulta de Azure Resource Graph

Usa esta consulta para encontrar instancias de APIM potencialmente vulnerables:

root@kitploit:~
resources
| where type == "microsoft.apimanagement/service"
| where properties.developerPortalStatus == "Enabled"
| where sku.name != "Consumption"
| project name, resourceGroup, subscriptionId, location, sku.name, properties.developerPortalStatus

Para comprobar los proveedores de identidad de autenticación básica:

root@kitploit:~
resources
| where type == "microsoft.apimanagement/service/identityproviders"
| where name endswith "/basic"
| project apimInstance=tostring(split(id, "/providers/Microsoft.ApiManagement/service/")[1]), resourceGroup, subscriptionId

Comandos de Azure CLI

Comprueba el estado del portal para desarrolladores:

root@kitploit:~
az apim show --name <apim-name> --resource-group <rg-name> --query "{name:name, portalStatus:developerPortalStatus, sku:sku.name}"

Enumera los proveedores de identidad (comprueba si hay 'basic'):

root@kitploit:~
az apim identity-provider list --resource-group <rg-name> --service-name <apim-name> --query "[].name"

Comprueba la configuración de registro:

root@kitploit:~
az rest --method get --url "https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.ApiManagement/service/<apim-name>/portalsettings/signup?api-version=2022-08-01" --query "properties.enabled"

Tabla resumen

Combinación crítica: una instancia es vulnerable al bypass de registro cuando:

  • properties.developerPortalStatus == 'Enabled' Y
  • el recurso identityProviders/basic existe Y
  • portalsettings/signup.properties.enabled == false

Identificación de las instancias de APIM de tu organización

AVISO LEGAL: la información que aparece a continuación se proporciona únicamente para identificar y proteger las instancias de Azure APIM de tu propia organización. El acceso no autorizado a sistemas informáticos es ilegal. Solo prueba sistemas que te pertenezcan o para los que tengas autorización explícita por escrito.

Google Dorks

Encuentra portales con registro de autenticación básica (probablemente vulnerables):

root@kitploit:~
site:developer.azure-api.net "Sign up" "Email" "Password"
root@kitploit:~
site:developer.azure-api.net "Create account" "Username"
root@kitploit:~
site:developer.azure-api.net inurl:/signup "register"

Encuentra portales con páginas de inicio de sesión (indica que la autenticación básica puede estar configurada):

root@kitploit:~
site:developer.azure-api.net "Sign in" "Email" "Password" -"Azure AD" -"Microsoft account"
root@kitploit:~
site:developer.azure-api.net inurl:/signin "password"

Encuentra portales para desarrolladores con documentación de API expuesta:

root@kitploit:~
site:developer.azure-api.net inurl:/apis "Subscribe"
root@kitploit:~
site:developer.azure-api.net "API" "Products" "Subscribe"

Descubrimiento general:

root@kitploit:~
site:*.developer.azure-api.net
root@kitploit:~
inurl:developer.azure-api.net "Developer Portal"

Shodan

Encuentra portales para desarrolladores de APIM:

root@kitploit:~
http.title:"Developer Portal" http.html:"azure-api.net"
root@kitploit:~
ssl.cert.subject.cn:"*.developer.azure-api.net"
root@kitploit:~
http.html:"developerPortal" http.html:"azure"

Escaneo masivo con Nuclei

Después de descubrir objetivos, escanéalos con Nuclei:

root@kitploit:~
# Save targets to file
echo "https://target1.developer.azure-api.net" > targets.txt
echo "https://target2.developer.azure-api.net" >> targets.txt

# Mass scan
nuclei -t azure-apim-signup-bypass.yaml -l targets.txt -o vulnerable.txt

Descubrimiento de activos para tu organización

Si tu organización usa Azure APIM, puedes identificar tus propias instancias usando:

Azure Portal:

  • Ve a Azure Portal → Todos los recursos → Filtra por «API Management»
  • O usa el Explorador de Azure Resource Graph con las consultas de la sección anterior

Azure CLI (para tus suscripciones):

root@kitploit:~
# List all APIM instances in your subscriptions
az apim list --query "[].{name:name, resourceGroup:resourceGroup, url:developerPortalUrl}"

Verificación de tus propias instancias

Usa estos métodos para comprobar si las instancias de APIM de TU organización son vulnerables:

Uso del script de verificación:

root@kitploit:~
# Check your own instance
python apim_vuln_checker.py https://YOUR-ORG.developer.azure-api.net

# With Azure RM property checks (recommended for internal audits)
python apim_vuln_checker.py --azure -s YOUR-SUB-ID -g YOUR-RG -n YOUR-APIM-NAME

Uso de Nuclei para auditorías de seguridad internas:

root@kitploit:~
# Scan your organization's APIM instances
nuclei -t azure-apim-signup-bypass.yaml -u https://YOUR-ORG.developer.azure-api.net

Indicadores de configuración vulnerable

Al auditar tus propias instancias, busca lo siguiente:

  • El portal para desarrolladores muestra «Sign up» con campos de correo electrónico/contraseña (no solo «Sign in with Microsoft»)
  • El proveedor de identidad de autenticación básica está configurado en Azure Portal
  • El registro está «deshabilitado» en la interfaz, pero el proveedor de autenticación básica sigue existiendo

Indicadores de NO vulnerabilidad:

  • Solo se ven las opciones «Sign in with Microsoft» o «Azure AD»
  • No hay ningún proveedor de identidad de autenticación básica configurado
  • El portal para desarrolladores está deshabilitado por completo

Pruebas de penetración autorizadas

Si eres un profesional de la seguridad que realiza pruebas autorizadas:

  1. Asegúrate de tener autorización por escrito del propietario del sistema
  2. Documenta el alcance y los límites de tu compromiso
  3. Sigue las prácticas de divulgación responsable
  4. Informa de los hallazgos a la organización, no los explotes públicamente

Divulgación responsable

Si descubres una instancia de APIM vulnerable de terceros:

  1. NO intentes crear cuentas ni acceder al sistema
  2. Ponte en contacto directamente con el equipo de seguridad de la organización
  3. Entrégales este aviso para que puedan remediar el problema
  4. Concede un tiempo razonable para la remediación antes de cualquier divulgación

Script de verificación

Se proporciona un script de Python para comprobar si tu instancia de APIM es vulnerable.

Instalación

root@kitploit:~
# Basic installation (HTTP probe only)
pip install requests colorama

# Full installation (includes Azure RM property checks)
pip install requests colorama azure-identity

Uso

El script admite dos modos:

  1. Sonda HTTP: comprobación externa de caja negra a través de los endpoints del portal para desarrolladores
  2. Comprobación de Azure RM: verificación interna de propiedades a través de la API de Azure Resource Manager
root@kitploit:~
# HTTP probe (external check)
python apim_vuln_checker.py https://your-apim.developer.azure-api.net

# Azure RM property check (requires az login)
python apim_vuln_checker.py --azure -s <subscription-id> -g <resource-group> -n <apim-name>

# Combined check (both HTTP probe and Azure RM)
python apim_vuln_checker.py https://your-apim.developer.azure-api.net \
    --azure -s <subscription-id> -g <resource-group> -n <apim-name>

# Verbose output
python apim_vuln_checker.py https://your-apim.developer.azure-api.net -v

# Skip SSL verification
python apim_vuln_checker.py https://your-apim.developer.azure-api.net -k

# JSON output
python apim_vuln_checker.py https://your-apim.developer.azure-api.net --json

Comprobaciones de propiedades de Azure RM

Cuando se usa el modo --azure, el script consulta directamente la API de Azure Resource Manager para comprobar:

Propiedad

Requisitos previos para el modo Azure RM:

  1. Instala azure-identity: pip install azure-identity
  2. Autentícate con Azure: az login
  3. Asegúrate de tener acceso de Lector al recurso de APIM

Ejemplo de salida

root@kitploit:~
   ___                 __              ____      
  / _ )___  __ _____  / /___ ____ __  / __ \__ __
 / _  / _ \/ // / _ \/ __/ // / // / / /_/ / // /
/____/\___/\_,_/_//_/\__/\_, /\_, /  \____/\_, / 
                        /___//___/        /___/  
    
    Author: Mihalis Haatainen, Bountyy Oy - www.bountyy.fi

======================================================================
Azure APIM Vulnerability Checker
Cross-Tenant Signup Bypass Detection
======================================================================

[?] Checking signup endpoint accessibility...
[i] Signup endpoint is accessible
[?] Checking if Basic Auth signup API is accessible...
[!] Basic Auth signup API ACTIVE (captcha validation)
[?] Checking if signup is hidden/disabled in UI...
[i] Signup page returns 404 (hidden in UI)

======================================================================
VULNERABILITY ASSESSMENT RESULTS
======================================================================

Target: https://example.developer.azure-api.net

Risk Level: CRITICAL - VULNERABLE TO SIGNUP BYPASS

Detailed Checks:

  [!] signup_ui: Signup endpoint is accessible
  [!] basic_auth_api: Basic Auth signup API ACTIVE (captcha validation)
  [+] signup_ui_hidden: Signup page returns 404 (hidden in UI)

Recommendations:

CRITICAL: SIGNUP BYPASS VULNERABILITY CONFIRMED

The Basic Auth signup API is accessible even though UI hides signup.
Attackers can register accounts by calling the API directly.

Immediate actions:
  1. DISABLE Basic Authentication in Azure Portal immediately
  2. Audit all developer portal user accounts for unauthorized signups
  3. Review user creation logs - check for API-based registrations
  4. Implement Azure AD authentication only

Plantilla de Nuclei

Se proporciona una plantilla de Nuclei para el escaneo automatizado.

Uso

root@kitploit:~
# Single target
nuclei -t azure-apim-signup-bypass.yaml -u https://target.developer.azure-api.net

# Multiple targets from file
nuclei -t azure-apim-signup-bypass.yaml -l targets.txt

# With proxy (for debugging)
nuclei -t azure-apim-signup-bypass.yaml -u https://target.developer.azure-api.net -proxy http://127.0.0.1:8080

# Skip SSL verification
nuclei -t azure-apim-signup-bypass.yaml -u https://target.developer.azure-api.net -insecure

Detalles de la plantilla

  • Envía una solicitud POST al endpoint /signup con datos de captcha de prueba
  • Detecta la API de registro activa comprobando las respuestas de error de captcha/validación
  • Puntuación CVSS: 6.5 (media-alta)
  • CWE-284: Control de acceso inadecuado

Mitigación

Acciones inmediatas

  1. Elimina por completo el proveedor de identidad de autenticación básica en Azure Portal:
  • Ve a tu instancia de APIM
  • Ve a Portal para desarrolladores -> Identidades
  • Elimina por completo el proveedor de identidad «Nombre de usuario y contraseña»
  • Nota: simplemente deshabilitar el registro en la interfaz NO es suficiente
  1. Audita las cuentas existentes:
  • Revisa todas las cuentas de usuario del portal para desarrolladores
  • Busca cuentas creadas a través de la API (comprueba las marcas de tiempo y los patrones de creación)
  • Elimina cualquier cuenta no autorizada
  1. Habilita la autenticación de Azure AD:
  • Configura Azure AD como único proveedor de identidad
  • Esto impone límites adecuados entre inquilinos

Recomendaciones a largo plazo

  • Usa exclusivamente la autenticación de Azure AD
  • No confíes en las restricciones de registro a nivel de interfaz
  • Supervisa la actividad de registro del portal para desarrolladores
  • Audita periódicamente las cuentas de usuario del portal

Respuesta de Microsoft

Se notificó dos veces al Centro de respuesta de seguridad de Microsoft (MSRC) sobre esta vulnerabilidad. Ambos informes se cerraron con la siguiente determinación:

«Por diseño»

MSRC no considera que esto sea una vulnerabilidad de seguridad, a pesar del bypass de los controles administrativos y de las implicaciones entre inquilinos.

Archivos

  • apim_vuln_checker.py: script de verificación de vulnerabilidades en Python
  • azure-apim-signup-bypass.yaml: plantilla de Nuclei para el escaneo automatizado
  • README.md: este archivo

Autor

Mihalis Haatainen
Bountyy Oy: empresa finlandesa de pruebas de penetración e investigación en seguridad

  • Sitio web: www.bountyy.fi

Licencia

Este aviso y las herramientas asociadas se publican con fines defensivos. Úsalas de forma responsable.

Licencia MIT: consulta el archivo LICENSE para obtener más detalles.

Referencias

  • Entrada de blog: cuando «Deshabilitado» no significa deshabilitado
  • Documentación de Azure API Management
  • Descripción general del portal para desarrolladores de APIM
Descargar herramienta
Ruta de la propiedadValor vulnerableDescripción
properties.developerPortalStatusEnabledEl portal para desarrolladores es accesible
sku.nameDeveloper, Basic, Standard, PremiumNiveles que no son de consumo (el nivel de consumo tiene funciones limitadas del portal)
CondiciónPropiedad/recursoValor vulnerable
Portal habilitadoproperties.developerPortalStatus== 'Enabled'
SKU que no es de consumosku.name!= 'Consumption'
Autenticación básica existenteRecurso identityProviders/basicEl recurso existe
Registro oculto (bypass posible)portalsettings/signup.properties.enabled== false (con autenticación básica)
Valor vulnerable
properties.developerPortalStatus== 'Enabled'
sku.name!= 'Consumption'
Recurso identityProviders/basicExiste
portalsettings/signup.properties.enabled== false