Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Azure-APIM-Cross-Tenant-Signup-Bypass — Aviso de segurança: o Portal do Desenvolvedor do Azure APIM permite o registro de contas entre locatários ao contornar as restrições de inscrição da UI. Relatado ao MSRC duas vezes - encerrado como "by design". | Kitploit
Ferramentas/GitHubGitHub/bountyyfi/azure-apim-cross-tenant-signup-bypass
ReconhecimentoAnálise de VulnerabilidadesExploração de Aplicações WebColeta de InformaçõesSegurança na NuvemConfiguração IncorretaSegurança de API
GitHubbountyyfi/azure-apim-cross-tenant-signup-bypass

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →

Azure-APIM-Cross-Tenant-Signup-Bypass

Aviso de segurança: o Portal do Desenvolvedor do Azure APIM permite o registro de contas entre locatários ao contornar as restrições de inscrição da UI. Relatado ao MSRC duas vezes - encerrado como "by design".

Ver Repositório
1613há 2 mesesAinda não revisado
Compartilhar

Azure APIM: Bypass de Cadastro entre Locatários

Status (01/12/2025): Esta vulnerabilidade continua ativa e explorável. A Microsoft não corrigiu este problema e o considera "by design" (comportamento intencional).

Aviso de Segurança

GHSA-vcwf-73jp-r7mv

CVE-2025-66390

Resumo

Uma vulnerabilidade de segurança no Portal do Desenvolvedor do Azure API Management (APIM) permite que atacantes registrem contas em qualquer instância do APIM que tenha a Autenticação Básica habilitada, mesmo quando os administradores desabilitaram o cadastro de usuários na interface do portal.

Esse bypass permite a criação de contas entre locatários (cross-tenant), potencialmente permitindo acesso não autorizado à documentação de APIs, chaves de assinatura e outros recursos expostos por meio do Portal do Desenvolvedor.

Linha do Tempo da Divulgação

DataAção
2025-09-30Vulnerabilidade descoberta
2025-09-30Relatório inicial enviado ao MSRC
2025-10-30Resposta do MSRC: Encerrado como "não é uma vulnerabilidade"
2025-11-01Segundo relatório enviado ao MSRC com detalhes adicionais
2025-11-20Resposta do MSRC: Encerrado como "by design"
2025-11-20Relatado ao CERT-FI
2025-11-26Divulgação pública
2025-11-27CVE solicitado à MITRE
2026-07-09CVE-2025-66390 atribuído pela MITRE TL-Root/CNA-LR

Detalhes da Vulnerabilidade

O Problema

Quando o Azure APIM está configurado com Autenticação Básica para o Portal do Desenvolvedor, os administradores podem desabilitar o registro de usuários pela interface do Portal Azure. No entanto, isso apenas oculta o formulário de cadastro na interface do portal.

O endpoint da API de cadastro subjacente permanece ativo e aceita solicitações de registro diretamente, contornando completamente a restrição da interface.

Causa Raiz

Dois problemas se combinam para criar esta vulnerabilidade:

  1. Restrição apenas na interface (UI): Desabilitar o cadastro apenas oculta o formulário na interface do portal. A API de cadastro do backend permanece ativa e acessível.
  2. Sem validação de locatário: A API de cadastro não valida se a solicitação se origina do portal do mesmo locatário. Solicitações podem ser criadas a partir de qualquer origem para registrar contas em qualquer instância vulnerável.

Vetor de Ataque

O ataque requer duas instâncias de APIM:

  1. Instância do atacante: Qualquer Portal do Desenvolvedor do APIM com cadastro habilitado (ou a própria instância do APIM do atacante)
  2. Instância alvo: Portal do Desenvolvedor do APIM da vítima com cadastro "desabilitado" na interface, mas com Autenticação Básica ainda configurada

Passos:

  1. O atacante acessa a página de cadastro do seu próprio Portal do Desenvolvedor do APIM (onde o cadastro está habilitado)
  2. O atacante preenche o formulário de cadastro e intercepta a solicitação (por exemplo, usando o Burp Suite)
  3. O atacante altera o cabeçalho Host da sua instância para a instância alvo
  4. O atacante envia a solicitação modificada
  5. A conta é criada na instância alvo apesar de o cadastro estar "desabilitado" no console administrativo
  6. O atacante obtém acesso ao Portal do Desenvolvedor alvo como usuário registrado

Detalhe técnico fundamental: O bypass entre locatários funciona manipulando o cabeçalho Host na solicitação POST de cadastro. O endpoint /signup processa solicitações com base no cabeçalho Host, sem validar os limites entre locatários.

Exemplo de manipulação da solicitação:

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]",...}}

O problema central: desabilitar o cadastro na interface não desabilita a API subjacente. O endpoint da API aceita solicitações entre locatários com base no cabeçalho Host.

Impacto

  • Criação de contas entre locatários - registrar-se em qualquer instância do APIM com Autenticação Básica habilitada
  • Bypass de controles administrativos - as restrições de cadastro são ineficazes
  • Acesso à documentação de APIs que pode conter informações internas sensíveis
  • Possibilidade de solicitar chaves de assinatura de APIs dependendo da configuração do portal
  • Exposição de portais internos - atacantes externos podem se registrar em portais "internos"

Configurações Afetadas

Sua instância do APIM é vulnerável se:

  • O provedor de identidade de Autenticação Básica está configurado (mesmo que o cadastro esteja "desabilitado" na interface)
  • O Portal do Desenvolvedor está implantado e acessível

Sua instância do APIM NÃO é vulnerável se:

  • O provedor de identidade de Autenticação Básica foi completamente removido (não apenas o cadastro desabilitado)
  • Apenas a autenticação Azure AD / OAuth está configurada
  • O Portal do Desenvolvedor não está implantado ou está desabilitado

Ponto-chave: Desabilitar o cadastro na interface do Portal Azure NÃO é suficiente. O provedor de identidade de Autenticação Básica deve ser completamente removido para impedir o bypass de cadastro entre locatários.

Propriedades de Recursos do Azure

Use estes valores de propriedade para identificar instâncias vulneráveis do APIM por meio do Azure Resource Graph, modelos ARM ou Azure Policy.

Propriedades de Configuração Vulneráveis

Verificação do Provedor de Identidade (Sub-recurso)

O provedor de identidade de Autenticação Básica é um recurso separado dentro da instância do APIM:

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

Vulnerável se existir: A presença de um recurso de provedor de identidade basic indica que a Autenticação Básica está configurada.

Configurações de Cadastro do Portal (Sub-recurso)

root@kitploit:~
Resource Type: Microsoft.ApiManagement/service/portalsettings/signup
Property: properties.enabled
PropriedadeValorSignificado
properties.enabledtrueCadastro visível na interface
properties.enabledfalseCadastro oculto na interface (a API ainda funciona se a Autenticação Básica existir!)

Consulta do Azure Resource Graph

Use esta consulta para encontrar instâncias do APIM potencialmente vulneráveis:

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 verificar provedores de identidade de Autenticação 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 da Azure CLI

Verifique o status do Portal do Desenvolvedor:

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

Liste os provedores de identidade (verifique se há 'basic'):

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

Verifique as configurações de cadastro:

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"

Tabela Resumo

Combinação crítica: Uma instância é vulnerável ao bypass de cadastro quando:

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

Identificando as Instâncias do APIM da Sua Organização

AVISO LEGAL: As informações abaixo são fornecidas exclusivamente para identificar e proteger as instâncias do Azure APIM da sua própria organização. O acesso não autorizado a sistemas de computador é ilegal. Teste apenas sistemas que você possui ou para os quais tenha autorização explícita por escrito.

Google Dorks

Encontre portais com cadastro por Autenticação Básica (provavelmente vulneráveis):

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"

Encontre portais com páginas de login (indica que a Autenticação Básica pode 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"

Encontre portais do desenvolvedor com documentação de APIs exposta:

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

Descoberta geral:

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

Shodan

Encontre Portais do Desenvolvedor do 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"

Varredura em Massa com Nuclei

Após descobrir os alvos, faça a varredura com o 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

Descoberta de Ativos para Sua Organização

Se sua organização usa o Azure APIM, você pode identificar suas próprias instâncias usando:

Portal Azure:

  • Navegue até Portal Azure → Todos os Recursos → Filtre por "API Management"
  • Ou use o Azure Resource Graph Explorer com as consultas da seção anterior

Azure CLI (para suas assinaturas):

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

Verificando Suas Próprias Instâncias

Use estes métodos para verificar se as instâncias do APIM da SUA organização são vulneráveis:

Usando o script de verificação:

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

Usando o Nuclei para auditorias internas de segurança:

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 Configuração Vulnerável

Ao auditar suas próprias instâncias, procure por:

  • O Portal do Desenvolvedor exibe "Sign up" (Cadastrar-se) com campos de E-mail/Senha (não apenas "Entrar com a Microsoft")
  • O provedor de identidade de Autenticação Básica está configurado no Portal Azure
  • O cadastro está "desabilitado" na interface, mas o provedor de Autenticação Básica ainda existe

Indicadores de NÃO vulnerabilidade:

  • Apenas opções "Entrar com a Microsoft" ou "Azure AD" visíveis
  • Nenhum provedor de identidade de Autenticação Básica configurado
  • O Portal do Desenvolvedor está completamente desabilitado

Testes de Penetração Autorizados

Se você é um profissional de segurança realizando testes autorizados:

  1. Garanta que você tem autorização por escrito do proprietário do sistema
  2. Documente o escopo e os limites do seu engajamento
  3. Siga as práticas de divulgação responsável
  4. Reporte as descobertas à organização, não as explore publicamente

Divulgação Responsável

Se você descobrir uma instância vulnerável de APIM de terceiros:

  1. NÃO tente criar contas ou acessar o sistema
  2. Entre em contato diretamente com a equipe de segurança da organização
  3. Forneça a eles este aviso para que possam corrigir o problema
  4. Permita um prazo razoável para a remediação antes de qualquer divulgação

Script de Verificação

Um script em Python é fornecido para verificar se a sua instância do APIM é vulnerável.

Instalação

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

O script suporta dois modos:

  1. Sonda HTTP (HTTP Probe) - Verificação externa do tipo caixa-preta por meio dos endpoints do Portal do Desenvolvedor
  2. Verificação Azure RM - Verificação interna de propriedades por meio da API do 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

Verificações de Propriedades do Azure RM

Ao usar o modo --azure, o script consulta diretamente a API do Azure Resource Manager para verificar:

Propriedade

Pré-requisitos para o modo Azure RM:

  1. Instale o azure-identity: pip install azure-identity
  2. Autentique-se no Azure: az login
  3. Garanta que você tem acesso de Leitor (Reader) ao recurso do APIM

Exemplo de Saída

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

Template Nuclei

Um template Nuclei é fornecido para varredura automatizada.

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

Detalhes do Template

  • Envia solicitação POST para o endpoint /signup com dados de captcha de teste
  • Detecta a API de cadastro ativa verificando respostas de erro de captcha/validação
  • Pontuação CVSS: 6.5 (Média-Alta)
  • CWE-284: Controle de Acesso Incorreto

Mitigação

Ações Imediatas

  1. Remova completamente o provedor de identidade de Autenticação Básica no Portal Azure:
  • Navegue até sua instância do APIM
  • Vá para Portal do Desenvolvedor -> Identidades
  • Exclua completamente o provedor de identidade "Nome de usuário e senha"
  • Observação: Simplesmente desabilitar o cadastro na interface NÃO é suficiente
  1. Audite as contas existentes:
  • Revise todas as contas de usuário do Portal do Desenvolvedor
  • Procure contas criadas via API (verifique carimbos de data/hora e padrões de criação)
  • Remova quaisquer contas não autorizadas
  1. Habilite a autenticação do Azure AD:
  • Configure o Azure AD como o único provedor de identidade
  • Isso impõe limites adequados de locatário

Recomendações de Longo Prazo

  • Use exclusivamente a autenticação do Azure AD
  • Não dependa de restrições de cadastro no nível da interface
  • Monitore a atividade de cadastro do Portal do Desenvolvedor
  • Audite regularmente as contas de usuário do portal

Resposta da Microsoft

O Microsoft Security Response Center (MSRC) foi notificado duas vezes sobre esta vulnerabilidade. Ambos os relatórios foram encerrados com a seguinte determinação:

"By design"

O MSRC não considera esta uma vulnerabilidade de segurança, apesar do bypass de controles administrativos e das implicações entre locatários.

Arquivos

  • apim_vuln_checker.py - Script Python de verificação de vulnerabilidade
  • azure-apim-signup-bypass.yaml - Template Nuclei para varredura automatizada
  • README.md - Este arquivo

Autor

Mihalis Haatainen
Bountyy Oy - Empresa finlandesa de testes de penetração e pesquisa em segurança

  • Site: www.bountyy.fi

Licença

Este aviso e as ferramentas associadas são publicados para fins defensivos. Use com responsabilidade.

Licença MIT - Consulte o arquivo LICENSE para obter detalhes.

Referências

  • Post no Blog: Quando "Desabilitado" Não Significa Desabilitado
  • Documentação do Azure API Management
  • Visão Geral do Portal do Desenvolvedor do APIM
Baixar ferramenta
Caminho da PropriedadeValor VulnerávelDescrição
properties.developerPortalStatusEnabledO Portal do Desenvolvedor está acessível
sku.nameDeveloper, Basic, Standard, PremiumCamadas não-Consumption (a camada Consumption tem recursos limitados de portal)
CondiçãoPropriedade/RecursoValor Vulnerável
Portal habilitadoproperties.developerPortalStatus== 'Enabled'
SKU não-Consumptionsku.name!= 'Consumption'
Autenticação Básica existerecurso identityProviders/basicO recurso existe
Cadastro oculto (bypass possível)portalsettings/signup.properties.enabled== false (com Autenticação Básica)
Valor Vulnerável
properties.developerPortalStatus== 'Enabled'
sku.name!= 'Consumption'
recurso identityProviders/basicExiste
portalsettings/signup.properties.enabled== false