漏洞概述 漏洞名称:存储型跨站脚本(Stored XSS) 描述:在SourceCodester Ship/Ferry Ticket Reservation System中,由于对用户提供的输入未进行适当的清理,存在存储型跨站脚本(Stored XSS)漏洞。 攻击方式:经过身份验证的攻击者可以在应用程序输入字段中注入恶意JavaScript载荷。应用程序存储注入的载荷并在查看受影响页面时执行,导致在另一个用户的浏览器中执行任意JavaScript。 影响范围 应用程序名称:Ship/Ferry Ticket Reservation System – PHP 供应商:SourceCodester 受影响组件:用户输入/配置文件功能 漏洞类型:存储型跨站脚本(Stored XSS) 潜在影响:可能导致会话劫持、账户泄露、凭证盗窃、未经授权的操作,或在已认证用户的上下文中执行恶意脚本。 修复方案 输入验证和输出编码:确保对用户提供的输入进行适当的清理和编码,以防止恶意JavaScript载荷的注入。 方法: - 以管理员身份进行身份验证 - 输入字段测试 - 载荷注入 - 存储载荷验证 - 客户端脚本执行验证 概念验证(POC)代码 复现步骤 1. 以管理员身份登录。 2. 导航到: 3. 创建新用户或编辑现有用户。 4. 在username字段中插入以下载荷: 5. 保存用户配置文件。 6. 注销并使用另一个用户账户(管理员或低权限用户)进行身份验证。 7. 观察到载荷在已认证页面中自动执行,并出现弹出窗口。 详细发现 漏洞名称:存储型跨站脚本(Stored XSS) 描述:应用程序未能清理用户控制的输入,特别是在username字段中,在用户创建或修改期间。 攻击方式:攻击者可以通过管理用户管理功能将恶意JavaScript载荷注入到username参数中。载荷永久存储在数据库中,并在已认证用户访问受影响页面时自动执行。 影响:由于恶意载荷在全局范围内渲染,任何已认证用户,包括管理员,都可能受到任意JavaScript执行的影响。 结论 该漏洞引入了一个持久的客户端攻击向量,可能导致账户泄露和未经授权的操作。建议尽快修复此漏洞,以确保应用程序的安全性。