漏洞关键信息 漏洞标题 Vulnerability Report — CSRF in send_message.php (Simple Public Chat Room 1.0) 发现者 Camilla Flocco 影响产品 Simple Public Chat Room 1.0 生产商:SourceCodester 漏洞类型 Cross Site Request Forgery (CSRF) 漏洞描述 send_message.php 终端 (POST /chat/send_message.php) 在 Simple Public Chat Room 中存在 Cross-Site Request Forgery (CSRF) 漏洞。 复现步骤(概要) 1. 登录到 http://localhost/chat/ 上的易受攻击的聊天应用。 2. 在认证状态下,打开一个恶意的 .html 文件(用于向聊天发送终端发送 POST 请求)。 3. 观察到攻击者未经受害者知情或同意,从受害者账户向聊天室 1(或其他目标聊天室)发送了消息。 影响组件 send_message.php(POST /chat/send_message.php)— 聊天消息提交端点 聊天模块(消息提交流程 / 客户端 JavaScript) 任何触发消息提交的 Web UI(在认证时) 攻击类型 远程 影响 - 代码执行 true 影响 - 权限提升 true 攻击向量 攻击者只需要诱骗一个已认证的用户访问一个自动向 send_message.php 发起伪造 POST 请求的恶意网页。由于认证依赖于会话 Cookie,并且应用程序缺乏 CSRF 防护和足够的服务器端来源/授权检查,所以伪造的请求会以受害者的权限进行处理。聊天室标识符和必需参数在客户端 JavaScript 或隐藏字段中可用,可以被攻击者发现并重用。 推荐缓解措施 为所有状态改变的 POST 终端实现 anti-CSRF令牌(同步器令牌模式)并在服务端验证它们。 在会话Cookie中适当设置 SameSite=Lax 或 SameSite=Strict。 在会话Cookie中设置 HttpOnly 和 Secure 标志。 验证POST请求上的 Origin 和 Referer 头部,拒接不受信任的来源请求。 强制执行服务器端授权以进行消息发送操作(验证用户是否被允许在目标聊天室发布)。 考虑对于高影响操作需要额外的确认或重新认证。 添加日志/监控以检测来自单一会话的自动化或批量操作。 参考文献 https://www.sourcecodester.com/php/12295/simple-public-chat-room-using-php.html 准备人: Camilla Flocco