漏洞概述 受影响版本: 产品:Chat System Using PHP 版本:1.0 供应商:code-projects.org 类型:Web 应用 语言:PHP 数据库:MySQL 漏洞信息: 漏洞类型:存储型跨站脚本(Stored XSS) CWE:CWE-79(网页生成期间输入未正确中和) 严重性:高 CVSS v3.1 评分:8.7 攻击向量:网络 攻击复杂度:低 所需权限:低(需要有效会话以发送消息) 用户交互:需要(受害者必须打开聊天室) 状态:未修补 漏洞描述: 在 Chat System Using PHP 版本 1.0 的实时聊天消息功能中发现了一个存储型跨站脚本(XSS)漏洞。该攻击涉及两个文件,形成完整的注入执行链: 注入: 中的 参数被直接存储到 表中,没有进行任何清理、HTML 编码或输入验证。 执行: :当任何用户加载聊天室时,所有存储的消息都会被检索并使用裸 语句呈现,没有 、 或任何类型的输出编码。 由于载荷在数据库中持久化,它在每个用户的浏览器中执行——包括管理员——只要消息记录存在。单次注入即可创建持久、自我传播的攻击面。 影响范围 会话劫持:所有用户(包括管理员)的活跃会话 cookie 在访问聊天室时暴露给攻击者。 持久攻击面:载荷在服务器重启后存活,直到手动删除数据库记录。 完全管理员权限:通过存储的 XSS 授予管理员会话,实现完全的应用程序控制。 蠕虫式 XSS:载荷可以自主在聊天室和用户之间传播。 网络钓鱼:所有用户都可以被静默重定向到攻击者控制的页面。 键盘记录:在每个受影响用户的会话中安装基于浏览器的键盘记录器。 连锁影响:结合 VULN-001,被盗的管理员会话可以在不需要其他凭据的情况下实现数据库破坏。 修复方案 1. 转义所有输出:在 中回显之前,使用 包装每个数据库来源的值。 2. 清理存储输入:在 中将 或 应用于 ,然后再插入数据库。 3. 内容安全策略(CSP):部署严格的 CSP 标头: 以阻止内联脚本执行。 4. HttpOnly 会话 Cookie:在 中设置 和 以防止 JavaScript 访问会话令牌。 5. 修复并发 SQL 注入:在 中同时使用预处理语句解决 SQL 注入问题,以防止复合利用。 6. 消息长度强制执行:实施服务器端最大消息长度(例如,500 个字符)以限制载荷大小。 7. 输出上下文感知:使用启用了自动转义的模板引擎(例如,Twig、Blade)以防止未来的 XSS 跨所有输出上下文。 概念验证(PoC)代码 POST 请求演示: 自我传播蠕虫载荷: 绕过基本 过滤器的替代载荷: