Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Azure-APIM-Cross-Tenant-Signup-Bypass — 安全公告:Azure APIM 开发者门户可通过绕过 UI 注册限制实现跨租户账户注册。已两次上报 MSRC——均以“按设计(by design)”关闭。 | Kitploit
工具/GitHubGitHub/bountyyfi/azure-apim-cross-tenant-signup-bypass
侦察漏洞分析Web应用程序漏洞利用信息收集云安全错误配置API 安全
GitHubbountyyfi/azure-apim-cross-tenant-signup-bypass

Azure-APIM-Cross-Tenant-Signup-Bypass

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

安全公告:Azure APIM 开发者门户可通过绕过 UI 注册限制实现跨租户账户注册。已两次上报 MSRC——均以“按设计(by design)”关闭。

查看仓库
16132个月前尚未审核

Azure APIM 跨租户注册绕过

状态(2025年12月1日): 该漏洞仍然存在且可被利用。Microsoft 尚未修复此问题,并认为其“设计使然”。

安全公告

GHSA-vcwf-73jp-r7mv

CVE-2025-66390

摘要

Azure API 管理(APIM)开发者门户中的一个安全漏洞允许攻击者在任何启用了基本身份验证的 APIM 实例上注册账户,即使管理员已在门户界面中禁用了用户注册。

该绕过可实现跨租户账户创建,从而可能允许未经授权访问 API 文档、订阅密钥以及通过开发者门户公开的其他资源。

披露时间线

日期操作
2025-09-30发现漏洞
2025-09-30向 MSRC 提交初始报告
2025-10-30MSRC 回应:以“非漏洞”为由关闭
2025-11-01向 MSRC 提交包含额外细节的第二份报告
2025-11-20MSRC 回应:以“设计使然”为由关闭
2025-11-20报告给 CERT-FI
2025-11-26公开披露
2025-11-27向 MITRE 申请 CVE
2026-07-09MITRE TL-Root/CNA-LR 分配 CVE-2025-66390

漏洞详情

问题

当 Azure APIM 为开发者门户配置了基本身份验证时,管理员可以通过 Azure 门户界面禁用用户注册。然而,这只是在门户界面中隐藏了注册表单。

底层注册 API 端点仍然保持活动状态,并直接接受注册请求,从而完全绕过了界面限制。

根本原因

两个问题的结合导致了该漏洞:

  1. 仅界面限制:禁用注册只是隐藏了门户界面中的表单。后端注册 API 仍然保持活动且可访问。
  2. 无租户验证:注册 API 不验证请求是否来自同一租户的门户。可以从任何来源构造请求,在任何易受攻击的实例上进行注册。

攻击向量

该攻击需要两个 APIM 实例:

  1. 攻击者的实例:任何启用了注册的 APIM 开发者门户(或攻击者自己的 APIM 实例)
  2. 目标实例:受害者的 APIM 开发者门户,界面中注册已被“禁用”,但仍配置了基本身份验证

步骤:

  1. 攻击者访问自己的 APIM 开发者门户注册页面(注册已启用)
  2. 攻击者填写注册表单并拦截请求(例如使用 Burp Suite)
  3. 攻击者将 Host 头从其实例更改为目标实例
  4. 攻击者提交修改后的请求
  5. 尽管其管理控制台中注册已被“禁用”,账户仍会在目标实例上创建
  6. 攻击者以注册用户身份获得对目标开发者门户的访问权限

关键技术细节: 跨租户绕过通过操纵注册 POST 请求中的 Host 头来实现。/signup 端点基于 Host 头处理请求,而不验证租户边界。

请求操作示例:

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

核心问题:在界面中禁用注册并不会禁用底层 API。该 API 端点基于 Host 头接受跨租户请求。

影响

  • 跨租户账户创建 - 可在任何启用了基本身份验证的 APIM 实例上注册
  • 绕过管理控制 - 注册限制无效
  • 访问 API 文档,其中可能包含敏感的内部信息
  • 可能请求 API 订阅密钥,具体取决于门户配置
  • 内部门户暴露 - 外部攻击者可以在“内部”门户上注册

受影响的配置

如果满足以下条件,您的 APIM 实例存在漏洞:

  • 已配置基本身份验证身份提供程序(即使界面中注册已被“禁用”)
  • 开发者门户已部署且可访问

如果满足以下条件,您的 APIM 实例不存在漏洞:

  • 已完全移除基本身份验证身份提供程序(不仅仅是禁用注册)
  • 仅配置了 Azure AD / OAuth 身份验证
  • 开发者门户未部署或已被禁用

关键点: 在 Azure 门户界面中禁用注册是不够的。必须完全移除基本身份验证身份提供程序,才能防止跨租户注册绕过。

Azure 资源属性

使用这些属性值,通过 Azure Resource Graph、ARM 模板或 Azure Policy 识别易受攻击的 APIM 实例。

易受攻击的配置属性

属性路径易受攻击的值说明

身份提供程序检查(子资源)

基本身份验证身份提供程序是 APIM 实例下的一个独立资源:

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

如果存在则易受攻击: 存在 basic 身份提供程序资源表示已配置基本身份验证。

门户注册设置(子资源)

root@kitploit:~
Resource Type: Microsoft.ApiManagement/service/portalsettings/signup
Property: properties.enabled
属性值含义
properties.enabledtrue界面中显示注册
properties.enabledfalse界面中隐藏注册(如果存在基本身份验证,API 仍然有效!)

Azure Resource Graph 查询

使用以下查询查找可能易受攻击的 APIM 实例:

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

检查基本身份验证身份提供程序:

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

Azure CLI 命令

检查开发者门户状态:

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

列出身份提供程序(检查 'basic'):

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

检查注册设置:

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"

汇总表

关键组合: 实例存在注册绕过漏洞的条件:

  • properties.developerPortalStatus == 'Enabled' 且
  • identityProviders/basic 资源存在 且
  • portalsettings/signup.properties.enabled == false

识别您组织的 APIM 实例

法律免责声明: 以下信息仅供识别和保护您自己组织的 Azure APIM 实例之用。未经授权访问计算机系统属违法行为。请仅测试您拥有的或已获得明确书面授权进行测试的系统。

Google Dorks

查找带有基本身份验证注册功能的门户(最可能易受攻击):

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"

查找带有登录页面的门户(表示可能已配置基本身份验证):

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"

查找暴露了 API 文档的开发者门户:

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

常规发现:

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

Shodan

查找 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"

Nuclei 批量扫描

发现目标后,使用 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

您组织的资产发现

如果您的组织使用 Azure APIM,您可以使用以下方法识别自己的实例:

Azure 门户:

  • 导航到 Azure 门户 → 所有资源 → 按“API 管理”筛选
  • 或使用 Azure Resource Graph Explorer 以及上一节中的查询

Azure CLI(适用于您的订阅):

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

验证您自己的实例

使用以下方法检查您组织的 APIM 实例是否存在漏洞:

使用验证脚本:

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

使用 Nuclei 进行内部安全审计:

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

易受攻击配置的指标

在审计您自己的实例时,请检查:

  • 开发者门户显示带有“电子邮件/密码”字段的“注册”(不仅仅是“使用 Microsoft 登录”)
  • 在 Azure 门户中配置了基本身份验证身份提供程序
  • 界面中注册被“禁用”,但基本身份验证提供程序仍然存在

不构成漏洞的指标:

  • 仅显示“使用 Microsoft 登录”或“Azure AD”选项
  • 未配置基本身份验证身份提供程序
  • 开发者门户被完全禁用

授权渗透测试

如果您是进行授权测试的安全专业人员:

  1. 确保您拥有系统所有者的书面授权
  2. 记录您测试的范围和边界
  3. 遵循负责任披露的做法
  4. 向组织报告发现,而不是公开利用

负责任披露

如果您发现易受攻击的第三方 APIM 实例:

  1. 不要尝试创建账户或访问系统
  2. 直接联系组织的安全团队
  3. 向他们提供此公告,以便他们进行修复
  4. 在任何披露之前,给予合理的修复时间

验证脚本

提供了一个 Python 脚本,用于检查您的 APIM 实例是否存在漏洞。

安装

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

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

用法

该脚本支持两种模式:

  1. HTTP 探测 - 通过开发者门户端点进行外部黑盒检查
  2. Azure RM 检查 - 通过 Azure Resource Manager API 进行内部属性检查
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

Azure RM 属性检查

使用 --azure 模式时,脚本直接查询 Azure Resource Manager API 以检查:

属性易受攻击的值

Azure RM 模式的前提条件:

  1. 安装 azure-identity:pip install azure-identity
  2. 使用 Azure 进行身份验证:az login
  3. 确保您对 APIM 资源具有读取者访问权限

输出示例

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

Nuclei 模板

提供了一个用于自动化扫描的 Nuclei 模板。

用法

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

模板详情

  • 向 /signup 端点发送带有测试验证码数据的 POST 请求
  • 通过检查验证码/验证错误响应来检测活跃的注册 API
  • CVSS 评分:6.5(中高)
  • CWE-284:访问控制不当

缓解措施

立即行动

  1. 在 Azure 门户中完全移除基本身份验证身份提供程序:
  • 导航到您的 APIM 实例
  • 转到开发者门户 -> 标识
  • 完全删除“用户名和密码”身份提供程序
  • 注意:仅在界面中禁用注册是不够的
  1. 审计现有账户:
  • 审查所有开发者门户用户账户
  • 查找通过 API 创建的账户(检查创建时间戳和模式)
  • 删除任何未经授权的账户
  1. 启用 Azure AD 身份验证:
  • 将 Azure AD 配置为唯一身份提供程序
  • 这将强制实施适当的租户边界

长期建议

  • 仅使用 Azure AD 身份验证
  • 不要依赖界面级别的注册限制
  • 监控开发者门户的注册活动
  • 定期审计门户用户账户

Microsoft 的回应

Microsoft 安全响应中心(MSRC)已两次收到关于此漏洞的通知。两份报告均以下列结论关闭:

“设计使然”

尽管绕过了管理控制并存在跨租户影响,MSRC 仍不认为这是一个安全漏洞。

文件

  • apim_vuln_checker.py - Python 漏洞验证脚本
  • azure-apim-signup-bypass.yaml - 用于自动化扫描的 Nuclei 模板
  • README.md - 本文件

作者

Mihalis Haatainen
Bountyy Oy - 芬兰渗透测试和安全研究公司

  • 网站:www.bountyy.fi

许可证

本公告及相关工具仅供防御目的发布。请负责任地使用。

MIT 许可证 - 详情请参阅 LICENSE 文件。

参考

  • 博客文章:当“已禁用”并不意味着已禁用
  • Azure API 管理文档
  • APIM 开发者门户概述
下载工具
properties.developerPortalStatusEnabled开发者门户可访问
sku.nameDeveloper, Basic, Standard, Premium非 Consumption 层级(Consumption 层级的门户功能有限)
条件属性/资源易受攻击的值
门户已启用properties.developerPortalStatus== 'Enabled'
非 Consumption SKUsku.name!= 'Consumption'
存在基本身份验证identityProviders/basic 资源资源存在
注册被隐藏(存在绕过可能)portalsettings/signup.properties.enabled== false(存在基本身份验证时)
properties.developerPortalStatus== 'Enabled'
sku.name!= 'Consumption'
identityProviders/basic 资源存在
portalsettings/signup.properties.enabled== false