Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Azure-APIM-Cross-Tenant-Signup-Bypass — Avis de sécurité : le portail développeur Azure APIM permet l'enregistrement de comptes entre locataires en contournant les restrictions d'inscription de l'interface utilisateur. Signalé deux fois à MSRC - fermé comme 'by design'. | Kitploit
Outils/GitHubGitHub/bountyyfi/azure-apim-cross-tenant-signup-bypass
ReconnaissanceAnalyse des VulnérabilitésExploitation d'Applications WebCollecte d'InformationsSécurité CloudMauvaise ConfigurationSécurité des API
GitHubbountyyfi/azure-apim-cross-tenant-signup-bypass

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

Azure-APIM-Cross-Tenant-Signup-Bypass

Avis de sécurité : le portail développeur Azure APIM permet l'enregistrement de comptes entre locataires en contournant les restrictions d'inscription de l'interface utilisateur. Signalé deux fois à MSRC - fermé comme 'by design'.

Voir le dépôt
16il y a 1 moisPas encore vérifié
Partager

Contournement de l'inscription inter-locataire Azure APIM

Statut (01.12.2025) : Cette vulnérabilité est toujours active et exploitable. Microsoft n'a pas corrigé ce problème et le considère comme « by design ».

Avis de sécurité

GHSA-vcwf-73jp-r7mv

CVE-2025-66390

Résumé

Une vulnérabilité de sécurité dans le portail développeur d'Azure API Management (APIM) permet à des attaquants de créer des comptes sur n'importe quelle instance APIM qui a l'authentification de base activée, même lorsque les administrateurs ont désactivé l'inscription des utilisateurs dans l'interface utilisateur du portail.

Ce contournement permet la création de comptes inter-locataires, pouvant potentiellement autoriser un accès non autorisé à la documentation des API, aux clés d'abonnement et à d'autres ressources exposées via le portail développeur.

Calendrier de divulgation

DateAction
2025-09-30Vulnérabilité découverte
2025-09-30Premier rapport soumis à MSRC
2025-10-30Réponse MSRC : Fermé comme « pas une vulnérabilité »
2025-11-01Deuxième rapport soumis à MSRC avec détails supplémentaires
2025-11-20Réponse MSRC : Fermé comme « by design »
2025-11-20Signalé à CERT-FI
2025-11-26Divulgation publique
2025-11-27CVE demandé auprès de MITRE
2026-07-09CVE-2025-66390 attribué par MITRE TL-Root/CNA-LR

Détails de la vulnérabilité

Le problème

Lorsque Azure APIM est configuré avec l'authentification de base pour le portail développeur, les administrateurs peuvent désactiver l'enregistrement des utilisateurs via l'interface utilisateur du portail Azure. Cependant, cela ne fait que masquer le formulaire d'inscription dans l'interface du portail.

Le point de terminaison API d'inscription sous-jacent reste actif et accepte les demandes d'enregistrement directement, contournant ainsi entièrement la restriction de l'interface utilisateur.

Cause racine

Deux problèmes se combinent pour créer cette vulnérabilité :

  1. Restriction uniquement dans l'interface utilisateur : La désactivation de l'inscription ne fait que masquer le formulaire dans l'interface du portail. L'API d'inscription côté serveur reste active et accessible.
  2. Absence de validation du locataire : L'API d'inscription ne vérifie pas que la demande provient du portail du même locataire. Les demandes peuvent être conçues depuis n'importe quelle source pour s'inscrire sur n'importe quelle instance vulnérable.

Vecteur d'attaque

L'attaque nécessite deux instances APIM :

  1. Instance de l'attaquant : Tout portail développeur APIM avec inscription activée (ou la propre instance APIM de l'attaquant)
  2. Instance cible : Portail développeur APIM de la victime avec inscription « désactivée » dans l'interface utilisateur mais avec l'authentification de base toujours configurée

Étapes :

  1. L'attaquant accède à la page d'inscription de son propre portail développeur APIM (où l'inscription est activée)
  2. L'attaquant remplit le formulaire d'inscription et intercepte la demande (par exemple, en utilisant Burp Suite)
  3. L'attaquant modifie l'en-tête Host de son instance vers l'instance cible
  4. L'attaquant soumet la demande modifiée
  5. Le compte est créé sur l'instance cible malgré le fait que l'inscription soit « désactivée » dans leur console d'administration
  6. L'attaquant obtient l'accès au portail développeur cible en tant qu'utilisateur enregistré

Détail technique clé : Le contournement inter-locataire fonctionne en manipulant l'en-tête Host dans la demande POST d'inscription. Le point de terminaison /signup traite les demandes en fonction de l'en-tête Host sans valider les limites du locataire.

Exemple de manipulation de demande :

root@kitploit:~
POST /signup HTTP/1.1
Host: target-apim.developer.azure-api.net   <-- Changé depuis l'instance de l'attaquant
Origin: https://attacker-apim.developer.azure-api.net
Content-Type: application/json

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

Le problème principal : désactiver l'inscription dans l'interface utilisateur ne désactive pas l'API sous-jacente. Le point de terminaison API accepte les demandes inter-locataires en fonction de l'en-tête Host.

Impact

  • Création de compte inter-locataire - s'inscrire sur toute instance APIM avec Auth de base activée
  • Contournement des contrôles administratifs - les restrictions d'inscription sont inefficaces
  • Accès à la documentation API pouvant contenir des informations internes sensibles
  • Possibilité de demander des clés d'abonnement API selon la configuration du portail
  • Exposition du portail interne - des attaquants externes peuvent s'inscrire sur des portails « internes »

Configurations affectées

Votre instance APIM est vulnérable si :

  • Le fournisseur d'identité Authentification de base est configuré (même si l'inscription est « désactivée » dans l'interface utilisateur)
  • Le portail développeur est déployé et accessible

Votre instance APIM n'est PAS vulnérable si :

  • Le fournisseur d'identité Authentification de base est complètement supprimé (pas seulement l'inscription désactivée)
  • Seule l'authentification Azure AD / OAuth est configurée
  • Le portail développeur n'est pas déployé ou est désactivé

Point clé : Désactiver l'inscription dans l'interface utilisateur du portail Azure n'est PAS suffisant. Le fournisseur d'identité Authentification de base doit être complètement supprimé pour empêcher le contournement de l'inscription inter-locataire.

Propriétés des ressources Azure

Utilisez ces valeurs de propriété pour identifier les instances APIM vulnérables via Azure Resource Graph, les modèles ARM ou Azure Policy.

Propriétés de configuration vulnérables

Vérification du fournisseur d'identité (sous-ressource)

Le fournisseur d'identité Authentification de base est une ressource distincte sous l'instance APIM :

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

Vulnérable si existe : La présence d'une ressource de fournisseur d'identité basic indique que l'authentification de base est configurée.

Paramètres d'inscription du portail (sous-ressource)

root@kitploit:~
Resource Type: Microsoft.ApiManagement/service/portalsettings/signup
Property: properties.enabled
PropriétéValeurSignification
properties.enabledtrueInscription visible dans l'interface utilisateur
properties.enabledfalseInscription masquée dans l'interface utilisateur (l'API fonctionne toujours si Auth de base existe !)

Requête Azure Resource Graph

Utilisez cette requête pour trouver les instances APIM potentiellement vulnérables :

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

Pour vérifier les fournisseurs d'identité Auth de 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

Commandes Azure CLI

Vérifier l'état du portail développeur :

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

Lister les fournisseurs d'identité (vérifier 'basic') :

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

Vérifier les paramètres d'inscription :

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"

Tableau récapitulatif

Combinaison critique : Une instance est vulnérable au contournement d'inscription lorsque :

  • properties.developerPortalStatus == 'Enabled' ET
  • la ressource identityProviders/basic existe ET
  • portalsettings/signup.properties.enabled == false

Identifier les instances APIM de votre organisation

AVERTISSEMENT JURIDIQUE : Les informations ci-dessous sont fournies uniquement pour identifier et sécuriser les instances Azure APIM de votre propre organisation. L'accès non autorisé à des systèmes informatiques est illégal. Testez uniquement les systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite.

Google Dorks

Trouver les portails avec inscription Auth de base (probablement les plus vulnérables) :

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"

Trouver les portails avec pages de connexion (indique que l'Auth de base peut être configurée) :

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"

Trouver les portails développeur avec documentation API exposée :

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

Découverte générale :

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

Shodan

Trouver les portails développeur 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"

Scan de masse Nuclei

Après avoir découvert les cibles, scannez avec Nuclei :

root@kitploit:~
# Enregistrer les cibles dans un fichier
echo "https://target1.developer.azure-api.net" > targets.txt
echo "https://target2.developer.azure-api.net" >> targets.txt

# Scan de masse
nuclei -t azure-apim-signup-bypass.yaml -l targets.txt -o vulnerable.txt

Découverte d'actifs pour votre organisation

Si votre organisation utilise Azure APIM, vous pouvez identifier vos propres instances en utilisant :

Portail Azure :

  • Accédez au portail Azure → Toutes les ressources → Filtrez par « Gestion des API »
  • Ou utilisez Azure Resource Graph Explorer avec les requêtes de la section précédente

Azure CLI (pour vos abonnements) :

root@kitploit:~
# Lister toutes les instances APIM dans vos abonnements
az apim list --query "[].{name:name, resourceGroup:resourceGroup, url:developerPortalUrl}"

Vérification de vos propres instances

Utilisez ces méthodes pour vérifier si les instances APIM de VOTRE organisation sont vulnérables :

En utilisant le script de vérification :

root@kitploit:~
# Vérifier votre propre instance
python apim_vuln_checker.py https://VOTRE-ORG.developer.azure-api.net

# Avec les vérifications des propriétés Azure RM (recommandé pour les audits internes)
python apim_vuln_checker.py --azure -s VOTRE-ID-ABONNEMENT -g VOTRE-GR -n VOTRE-NOM-APIM

En utilisant Nuclei pour les audits de sécurité internes :

root@kitploit:~
# Scanner les instances APIM de votre organisation
nuclei -t azure-apim-signup-bypass.yaml -u https://VOTRE-ORG.developer.azure-api.net

Indicateurs de configuration vulnérable

Lors de l'audit de vos propres instances, recherchez :

  • Le portail développeur affiche « Inscription » avec des champs Email/Mot de passe (pas seulement « Se connecter avec Microsoft »)
  • Le fournisseur d'identité Authentification de base est configuré dans le portail Azure
  • L'inscription est « désactivée » dans l'interface utilisateur mais le fournisseur Auth de base existe toujours

Indicateurs NON vulnérables :

  • Seules les options « Se connecter avec Microsoft » ou « Azure AD » sont visibles
  • Aucun fournisseur d'identité Authentification de base configuré
  • Le portail développeur est entièrement désactivé

Tests d'intrusion autorisés

Si vous êtes un professionnel de la sécurité effectuant des tests autorisés :

  1. Assurez-vous d'avoir une autorisation écrite du propriétaire du système
  2. Documentez le périmètre et les limites de votre engagement
  3. Suivez les pratiques de divulgation responsable
  4. Signalez les résultats à l'organisation, ne les exploitez pas publiquement

Divulgation responsable

Si vous découvrez une instance APIM tierce vulnérable :

  1. NE tentez PAS de créer des comptes ou d'accéder au système
  2. Contactez directement l'équipe de sécurité de l'organisation
  3. Fournissez-leur cet avis afin qu'ils puissent remédier
  4. Accordez un délai raisonnable pour la remédiation avant toute divulgation

Script de vérification

Un script Python est fourni pour vérifier si votre instance APIM est vulnérable.

Installation

root@kitploit:~
# Installation de base (sonde HTTP uniquement)
pip install requests colorama

# Installation complète (inclut les vérifications des propriétés Azure RM)
pip install requests colorama azure-identity

Utilisation

Le script prend en charge deux modes :

  1. Sonde HTTP - Vérification externe en boîte noire via les points de terminaison du portail développeur
  2. Vérification Azure RM - Vérification interne des propriétés via l'API Azure Resource Manager
root@kitploit:~
# Sonde HTTP (vérification externe)
python apim_vuln_checker.py https://votre-apim.developer.azure-api.net

# Vérification des propriétés Azure RM (nécessite az login)
python apim_vuln_checker.py --azure -s <id-abonnement> -g <groupe-ressources> -n <nom-apim>

# Vérification combinée (sonde HTTP et Azure RM)
python apim_vuln_checker.py https://votre-apim.developer.azure-api.net \
    --azure -s <id-abonnement> -g <groupe-ressources> -n <nom-apim>

# Sortie verbose
python apim_vuln_checker.py https://votre-apim.developer.azure-api.net -v

# Ignorer la vérification SSL
python apim_vuln_checker.py https://votre-apim.developer.azure-api.net -k

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

Vérifications des propriétés Azure RM

Lors de l'utilisation du mode --azure, le script interroge directement l'API Azure Resource Manager pour vérifier :

Propriété

Prérequis pour le mode Azure RM :

  1. Installez azure-identity : pip install azure-identity
  2. Authentifiez-vous auprès d'Azure : az login
  3. Assurez-vous d'avoir un accès Lecteur à la ressource APIM

Exemple de sortie

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

======================================================================
Vérificateur de vulnérabilité Azure APIM
Détection de contournement d'inscription inter-locataire
======================================================================

[?] Vérification de l'accessibilité du point de terminaison d'inscription...
[i] Le point de terminaison d'inscription est accessible
[?] Vérification de l'accessibilité de l'API d'inscription Auth de base...
[!] API d'inscription Auth de base ACTIVE (validation captcha)
[?] Vérification si l'inscription est masquée/désactivée dans l'interface utilisateur...
[i] La page d'inscription renvoie 404 (masquée dans l'interface utilisateur)

======================================================================
RÉSULTATS DE L'ÉVALUATION DE VULNÉRABILITÉ
======================================================================

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

Niveau de risque : CRITIQUE - VULNÉRABLE AU CONTOURNEMENT D'INSCRIPTION

Vérifications détaillées :

  [!] signup_ui : Le point de terminaison d'inscription est accessible
  [!] basic_auth_api : API d'inscription Auth de base ACTIVE (validation captcha)
  [+] signup_ui_hidden : La page d'inscription renvoie 404 (masquée dans l'interface utilisateur)

Recommandations :

CRITIQUE : VULNÉRABILITÉ DE CONTOURNEMENT D'INSCRIPTION CONFIRMÉE

L'API d'inscription Auth de base est accessible même si l'interface utilisateur masque l'inscription.
Les attaquants peuvent créer des comptes en appelant directement l'API.

Actions immédiates :
  1. DÉSACTIVEZ l'authentification de base dans le portail Azure immédiatement
  2. Auditez tous les comptes d'utilisateurs du portail développeur pour les inscriptions non autorisées
  3. Examinez les journaux de création d'utilisateurs - recherchez les enregistrements basés sur l'API
  4. Implémentez uniquement l'authentification Azure AD

Modèle Nuclei

Un modèle Nuclei est fourni pour le scan automatisé.

Utilisation

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

# Plusieurs cibles depuis un fichier
nuclei -t azure-apim-signup-bypass.yaml -l targets.txt

# Avec proxy (pour débogage)
nuclei -t azure-apim-signup-bypass.yaml -u https://target.developer.azure-api.net -proxy http://127.0.0.1:8080

# Ignorer la vérification SSL
nuclei -t azure-apim-signup-bypass.yaml -u https://target.developer.azure-api.net -insecure

Détails du modèle

  • Envoie une requête POST au point de terminaison /signup avec des données de test captcha
  • Détecte l'API d'inscription active en vérifiant les réponses d'erreur de captcha/validation
  • Score CVSS : 6.5 (Moyen-Élevé)
  • CWE-284 : Contrôle d'accès inadéquat

Atténuation

Actions immédiates

  1. Supprimez complètement le fournisseur d'identité Authentification de base dans le portail Azure :
  • Accédez à votre instance APIM
  • Allez dans Portail développeur -> Identités
  • Supprimez entièrement le fournisseur d'identité « Nom d'utilisateur et mot de passe »
  • Remarque : Désactiver simplement l'inscription dans l'interface utilisateur n'est PAS suffisant
  1. Auditez les comptes existants :
  • Passez en revue tous les comptes d'utilisateurs du portail développeur
  • Recherchez les comptes créés via l'API (vérifiez les horodatages et les modèles de création)
  • Supprimez tout compte non autorisé
  1. Activez l'authentification Azure AD :
  • Configurez Azure AD comme seul fournisseur d'identité
  • Cela renforce les limites appropriées du locataire

Recommandations à long terme

  • Utilisez exclusivement l'authentification Azure AD
  • Ne vous fiez pas aux restrictions d'inscription au niveau de l'interface utilisateur
  • Surveillez l'activité d'inscription au portail développeur
  • Auditez régulièrement les comptes d'utilisateurs du portail

Réponse de Microsoft

Microsoft Security Response Center (MSRC) a été informé deux fois de cette vulnérabilité. Les deux rapports ont été fermés avec la détermination suivante :

« By design »

MSRC ne considère pas cela comme une vulnérabilité de sécurité malgré le contournement des contrôles administratifs et les implications inter-locataires.

Fichiers

  • apim_vuln_checker.py - Script Python de vérification de vulnérabilité
  • azure-apim-signup-bypass.yaml - Modèle Nuclei pour le scan automatisé
  • README.md - Ce fichier

Auteur

Mihalis Haatainen
Bountyy Oy - Société finlandaise de tests d'intrusion et de recherche en sécurité

  • Site web : www.bountyy.fi

Licence

Cet avis et les outils associés sont publiés à des fins défensives. À utiliser de manière responsable.

Licence MIT - Voir le fichier LICENSE pour plus de détails.

Références

  • Blog Post: When “Disabled” Doesn’t Mean Disabled
  • Documentation Azure API Management
  • Présentation du portail développeur APIM
Télécharger l’outil
PropriétéValeur vulnérableDescription
properties.developerPortalStatusEnabledLe portail développeur est accessible
sku.nameDeveloper, Basic, Standard, PremiumNiveaux non-Consommation (le niveau Consommation a des fonctionnalités de portail limitées)
ConditionPropriété/RessourceValeur vulnérable
Portail activéproperties.developerPortalStatus== 'Enabled'
SKU non-Consommationsku.name!= 'Consumption'
Auth de base existeressource identityProviders/basicLa ressource existe
Inscription masquée (contournement possible)portalsettings/signup.properties.enabled== false (avec Auth de base)
Valeur vulnérable
properties.developerPortalStatus== 'Enabled'
sku.name!= 'Consumption'
ressource identityProviders/basicExiste
portalsettings/signup.properties.enabled== false