Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Azure-APIM-Cross-Tenant-Signup-Bypass — Advisory di sicurezza: il portale per sviluppatori di Azure APIM consente la registrazione di account cross-tenant aggirando le restrizioni di iscrizione dell'interfaccia utente. Segnalato due volte a MSRC - chiuso come "by design". | Kitploit
Strumenti/GitHubGitHub/bountyyfi/azure-apim-cross-tenant-signup-bypass
RicognizioneAnalisi delle VulnerabilitàSfruttamento di Applicazioni WebRaccolta InformazioniSicurezza CloudConfigurazione ErrataSicurezza delle API
GitHubbountyyfi/azure-apim-cross-tenant-signup-bypass

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Azure-APIM-Cross-Tenant-Signup-Bypass

Advisory di sicurezza: il portale per sviluppatori di Azure APIM consente la registrazione di account cross-tenant aggirando le restrizioni di iscrizione dell'interfaccia utente. Segnalato due volte a MSRC - chiuso come "by design".

Vedi Repository
16132 mesi faNon ancora revisionato
Condividi

Bypass della registrazione cross-tenant di Azure APIM

Stato (01.12.2025): Questa vulnerabilità è ancora attiva e sfruttabile. Microsoft non ha corretto il problema e lo considera "by design".

Advisory di sicurezza

GHSA-vcwf-73jp-r7mv

CVE-2025-66390

Riepilogo

Una vulnerabilità di sicurezza nel portale per sviluppatori (Developer Portal) di Azure API Management (APIM) consente agli attaccanti di registrare account su qualsiasi istanza APIM che abbia l'autenticazione di base (Basic Authentication) abilitata, anche quando gli amministratori hanno disabilitato la registrazione degli utenti nell'interfaccia del portale.

Questo bypass consente la creazione di account cross-tenant, permettendo potenzialmente l'accesso non autorizzato alla documentazione delle API, alle chiavi di sottoscrizione e ad altre risorse esposte tramite il portale per sviluppatori.

Cronologia della divulgazione

DataAzione
2025-09-30Vulnerabilità scoperta
2025-09-30Primo report inviato a MSRC
2025-10-30Risposta MSRC: chiuso come "non è una vulnerabilità"
2025-11-01Secondo report inviato a MSRC con dettagli aggiuntivi
2025-11-20Risposta MSRC: chiuso come "by design"
2025-11-20Segnalato a CERT-FI
2025-11-26Divulgazione pubblica
2025-11-27CVE richiesto a MITRE
2026-07-09CVE-2025-66390 assegnato da MITRE TL-Root/CNA-LR

Dettagli della vulnerabilità

Il problema

Quando Azure APIM è configurato con l'autenticazione di base per il portale per sviluppatori, gli amministratori possono disabilitare la registrazione degli utenti tramite l'interfaccia del portale Azure. Tuttavia, questo nasconde solo il modulo di registrazione nell'interfaccia del portale.

L'endpoint API di registrazione sottostante rimane attivo e accetta direttamente le richieste di registrazione, aggirando completamente la restrizione dell'interfaccia.

Causa principale

Due problemi si combinano per creare questa vulnerabilità:

  1. Restrizione solo a livello di interfaccia: disabilitare la registrazione nasconde solo il modulo nell'interfaccia del portale. L'API di registrazione backend rimane attiva e accessibile.
  2. Nessuna validazione del tenant: l'API di registrazione non verifica che la richiesta provenga dal portale dello stesso tenant. Le richieste possono essere create da qualsiasi origine per registrarsi su qualsiasi istanza vulnerabile.

Vettore d'attacco

L'attacco richiede due istanze APIM:

  1. Istanza dell'attaccante: qualsiasi portale per sviluppatori APIM con registrazione abilitata (o un'istanza APIM dell'attaccante)
  2. Istanza target: portale per sviluppatori APIM della vittima con registrazione "disabilitata" nell'interfaccia ma con autenticazione di base ancora configurata

Passaggi:

  1. L'attaccante accede alla pagina di registrazione del proprio portale per sviluppatori APIM (dove la registrazione è abilitata)
  2. L'attaccante compila il modulo di registrazione e intercetta la richiesta (ad es. usando Burp Suite)
  3. L'attaccante cambia l'header Host dalla propria istanza a quella target
  4. L'attaccante invia la richiesta modificata
  5. L'account viene creato sull'istanza target nonostante la registrazione sia "disabilitata" nella console di amministrazione
  6. L'attaccante ottiene l'accesso al portale per sviluppatori target come utente registrato

Dettaglio tecnico chiave: il bypass cross-tenant funziona manipolando l'header Host nella richiesta POST di registrazione. L'endpoint /signup elabora le richieste in base all'header Host senza validare i confini di tenant.

Esempio di manipolazione della richiesta:

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

Il problema principale: disabilitare la registrazione nell'interfaccia non disabilita l'API sottostante. L'endpoint API accetta richieste cross-tenant in base all'header Host.

Impatto

  • Creazione di account cross-tenant - registrazione su qualsiasi istanza APIM con autenticazione di base abilitata
  • Bypass dei controlli amministrativi - le restrizioni di registrazione sono inefficaci
  • Accesso alla documentazione delle API che potrebbe contenere informazioni interne sensibili
  • Possibilità di richiedere chiavi di sottoscrizione delle API a seconda della configurazione del portale
  • Esposizione dei portali interni - gli attaccanti esterni possono registrarsi su portali "interni"

Configurazioni interessate

La tua istanza APIM è vulnerabile se:

  • Il provider di identità con autenticazione di base è configurato (anche se la registrazione è "disabilitata" nell'interfaccia)
  • Il portale per sviluppatori è distribuito e accessibile

La tua istanza APIM NON è vulnerabile se:

  • Il provider di identità con autenticazione di base è completamente rimosso (non solo la registrazione disabilitata)
  • È configurata solo l'autenticazione Azure AD / OAuth
  • Il portale per sviluppatori non è distribuito o è disabilitato

Punto chiave: disabilitare la registrazione nell'interfaccia del portale Azure NON è sufficiente. Il provider di identità con autenticazione di base deve essere completamente rimosso per prevenire il bypass della registrazione cross-tenant.

Proprietà delle risorse Azure

Usa questi valori di proprietà per identificare le istanze APIM vulnerabili tramite Azure Resource Graph, modelli ARM o Azure Policy.

Proprietà di configurazione vulnerabili

Verifica del provider di identità (sotto-risorsa)

Il provider di identità con autenticazione di base è una risorsa separata all'interno dell'istanza APIM:

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

Vulnerabile se presente: la presenza di una risorsa provider di identità basic indica che l'autenticazione di base è configurata.

Impostazioni di registrazione del portale (sotto-risorsa)

root@kitploit:~
Resource Type: Microsoft.ApiManagement/service/portalsettings/signup
Property: properties.enabled
ProprietàValoreSignificato
properties.enabledtrueRegistrazione visibile nell'interfaccia
properties.enabledfalseRegistrazione nascosta nell'interfaccia (l'API funziona ancora se l'autenticazione di base è presente!)

Query di Azure Resource Graph

Usa questa query per trovare istanze APIM potenzialmente vulnerabili:

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

Per verificare i provider di identità con autenticazione di base:

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

Comandi Azure CLI

Verifica lo stato del portale per sviluppatori:

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

Elenca i provider di identità (verifica la presenza di 'basic'):

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

Verifica le impostazioni di registrazione:

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"

Tabella riepilogativa

Combinazione critica: un'istanza è vulnerabile al bypass della registrazione quando:

  • properties.developerPortalStatus == 'Enabled' E
  • la risorsa identityProviders/basic esiste E
  • portalsettings/signup.properties.enabled == false

Identificare le istanze APIM della tua organizzazione

DICHIARAZIONE LEGALE: le informazioni seguenti sono fornite esclusivamente per identificare e proteggere le istanze APIM Azure della propria organizzazione. L'accesso non autorizzato a sistemi informatici è illegale. Testa solo sistemi di tua proprietà o per cui disponi di un'esplicita autorizzazione scritta.

Google Dorks

Trova portali con registrazione tramite autenticazione di base (molto probabilmente vulnerabili):

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"

Trova portali con pagine di accesso (indica che l'autenticazione di base potrebbe essere configurata):

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"

Trova portali per sviluppatori con documentazione API esposta:

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

Individuazione generale:

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

Shodan

Trova portali per sviluppatori 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"

Scansione di massa con Nuclei

Dopo aver individuato i target, esegui la scansione 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

Individuazione delle risorse per la tua organizzazione

Se la tua organizzazione usa Azure APIM, puoi identificare le tue istanze usando:

Portale Azure:

  • Vai al Portale Azure → Tutte le risorse → Filtra per "API Management"
  • Oppure usa Esplora Azure Resource Graph con le query della sezione precedente

Azure CLI (per le tue sottoscrizioni):

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

Verifica delle proprie istanze

Usa questi metodi per verificare se le istanze APIM della TUA organizzazione sono vulnerabili:

Usando lo script di verifica:

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 Nuclei per audit di sicurezza interni:

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

Indicatori di configurazione vulnerabile

Quando esegui l'audit delle tue istanze, cerca:

  • Il portale per sviluppatori mostra "Registrati" con campi Email/Password (non solo "Accedi con Microsoft")
  • Il provider di identità con autenticazione di base è configurato nel portale Azure
  • La registrazione è "disabilitata" nell'interfaccia ma il provider di autenticazione di base esiste ancora

Indicatori di NON vulnerabilità:

  • Sono visibili solo le opzioni "Accedi con Microsoft" o "Azure AD"
  • Nessun provider di identità con autenticazione di base configurato
  • Il portale per sviluppatori è completamente disabilitato

Test di penetrazione autorizzati

Se sei un professionista della sicurezza che svolge test autorizzati:

  1. Assicurati di avere l'autorizzazione scritta del proprietario del sistema
  2. Documenta l'ambito e i confini del tuo incarico
  3. Segui le pratiche di divulgazione responsabile
  4. Segnala i risultati all'organizzazione, non sfruttarli pubblicamente

Divulgazione responsabile

Se scopri un'istanza APIM di terze parti vulnerabile:

  1. NON tentare di creare account o accedere al sistema
  2. Contatta direttamente il team di sicurezza dell'organizzazione
  3. Fornisci loro questo advisory così che possano porre rimedio
  4. Concedi un tempo ragionevole per la correzione prima di qualsiasi divulgazione

Script di verifica

Viene fornito uno script Python per verificare se la tua istanza APIM è vulnerabile.

Installazione

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

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

Utilizzo

Lo script supporta due modalità:

  1. Sonda HTTP - verifica esterna black-box tramite gli endpoint del portale per sviluppatori
  2. Verifica Azure RM - verifica interna delle proprietà tramite l'API 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

Verifiche delle proprietà Azure RM

Quando si usa la modalità --azure, lo script interroga direttamente l'API Azure Resource Manager per verificare:

Proprietà

Prerequisiti per la modalità Azure RM:

  1. Installa azure-identity: pip install azure-identity
  2. Autenticati con Azure: az login
  3. Assicurati di avere accesso in lettura (Reader) alla risorsa APIM

Esempio di output

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

Viene fornito un template Nuclei per la scansione automatizzata.

Utilizzo

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

Dettagli del template

  • Invia una richiesta POST all'endpoint /signup con dati captcha di test
  • Rileva un'API di registrazione attiva controllando le risposte di errore captcha/validazione
  • Punteggio CVSS: 6.5 (Medio-Alto)
  • CWE-284: Controllo degli accessi improprio

Mitigazione

Azioni immediate

  1. Rimuovi completamente il provider di identità con autenticazione di base nel portale Azure:
  • Vai alla tua istanza APIM
  • Vai a Portale per sviluppatori -> Identità
  • Elimina completamente il provider di identità "Nome utente e password"
  • Nota: disabilitare semplicemente la registrazione nell'interfaccia NON è sufficiente
  1. Controlla gli account esistenti:
  • Rivedi tutti gli account utente del portale per sviluppatori
  • Cerca account creati tramite API (controlla timestamp e pattern di creazione)
  • Rimuovi eventuali account non autorizzati
  1. Abilita l'autenticazione Azure AD:
  • Configura Azure AD come unico provider di identità
  • Questo impone corretti confini di tenant

Raccomandazioni a lungo termine

  • Usa esclusivamente l'autenticazione Azure AD
  • Non fare affidamento sulle restrizioni di registrazione a livello di interfaccia
  • Monitora l'attività di registrazione del portale per sviluppatori
  • Verifica regolarmente gli account utente del portale

Risposta di Microsoft

Il Microsoft Security Response Center (MSRC) è stato informato due volte di questa vulnerabilità. Entrambi i report sono stati chiusi con la seguente determinazione:

"By design"

MSRC non considera questa una vulnerabilità di sicurezza nonostante il bypass dei controlli amministrativi e le implicazioni cross-tenant.

File

  • apim_vuln_checker.py - script Python di verifica della vulnerabilità
  • azure-apim-signup-bypass.yaml - template Nuclei per la scansione automatizzata
  • README.md - questo file

Autore

Mihalis Haatainen
Bountyy Oy - azienda finlandese di penetration testing e ricerca sulla sicurezza

  • Sito web: www.bountyy.fi

Licenza

Questo advisory e gli strumenti associati sono rilasciati per scopi difensivi. Usali in modo responsabile.

Licenza MIT - Vedi il file LICENSE per i dettagli.

Riferimenti

  • Post del blog: quando "disabilitato" non significa disabilitato
  • Documentazione di Azure API Management
  • Panoramica del portale per sviluppatori APIM
Scarica lo strumento
Percorso proprietàValore vulnerabileDescrizione
properties.developerPortalStatusEnabledIl portale per sviluppatori è accessibile
sku.nameDeveloper, Basic, Standard, PremiumLivelli non-Consumption (il livello Consumption ha funzionalità del portale limitate)
CondizioneProprietà/RisorsaValore vulnerabile
Portale abilitatoproperties.developerPortalStatus== 'Enabled'
SKU non-Consumptionsku.name!= 'Consumption'
Autenticazione di base presenterisorsa identityProviders/basicLa risorsa esiste
Registrazione nascosta (bypass possibile)portalsettings/signup.properties.enabled== false (con autenticazione di base)
Valore vulnerabile
properties.developerPortalStatus== 'Enabled'
sku.name!= 'Consumption'
risorsa identityProviders/basicEsiste
portalsettings/signup.properties.enabled== false