关键信息总结 漏洞类型 SQL注入 (Critical, Unauthenticated, destructive) 影响项目 Student-Crud-Operation 组件 delete.php 严重性 Critical CVSS v3.1 向量 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H (High/Critical) 发现日期 2025-09-29 报告人 px 概要 在 中存在未认证的SQL注入漏洞,其中 GET 参数直接拼接到 SQL DELETE 语句中,没有进行验证或参数化。攻击者可以通过构造请求执行破坏性的SQL操作,包括删除 表中的所有记录,无需任何身份验证。 受影响版本 所有包含 文件第4-8行代码的示例应用版本。 技术细节 易受攻击的代码 根本原因 - 参数未经任何清理、验证或参数绑定直接拼接到SQL命令中。 - 缺乏认证/授权检查,任何人都可以访问 。 影响 - 表中的记录被大量删除。 - 根据服务器配置,可能存在更广泛的SQL操纵风险(如堆叠查询、注释)。 信任边界和暴露 - 公开的未认证端点,直接SQL执行。 - 无CSRF保护/令牌检查。 概念验证 (PoC) 前提条件 - 应用已部署并可通过浏览器访问(例如:http://localhost/Student-Registration-Crud-Operation/index.php)。 - 数据库初始化为 和 配置文件中的内容(第1-9行)。 重现步骤 1. 导航到 并观察列出的记录数量。 2. 发送以下请求: - 原始格式:http://localhost/Student-Registration-Crud-Operation/delete.php?id=1 OR 1=1 - URL编码(跨服务器更安全):http://localhost/Student-Registration-Crud-Operation/delete.php?id=C2%81OR%201%3D1%20C2%82 - 如果评论风格不同,尝试:http://localhost/Student-Registration-Crud-Operation/delete.php? id=%23OR%200%3D0%23 3. 执行后,应用通常会重定向回 。列表被观察到大幅减少或为空,表明大量删除。 严重性和评分 基于提示的评分 - 影响(I):3(破坏性DB操作) - 可利用性(E):2(无需认证) - 交互性(I):0(无用户交互) - 曝光度(X):2(公共路由) - 利用链(C):1.5(预设进一步攻击) - 得分 = (I+E+H+X)×C=(9+5+5)×1.5=21…P1(Critical) CVSS v3.1(估计) - AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H…High/Critical 修复措施 1. 参数化SQL - 使用预处理语句 ( ) 和严格类型的绑定参数。 - 确保 被正确验证为整数。 2. 强制授权 - 将破坏性操作(DELETE)限制为经过认证的管理员(RBAC)。 3. 输入验证 - 在数据库使用前,使用 或严格的整数解析验证和类型转换 。 4. HTTP方法和CSRF - 对于状态更改操作使用POST,并强制执行CSRF保护。 安全编码示例(参考补丁大纲) 参考文献 项目主页:https://code-projects.org/student-crud-operation-in-php-with-source-code/ 源码下载页:https://download.code-projects.org/details/c48367791828-4e2b-95c2-e02706314c81 披露时间线 2025-09-29:漏洞识别和验证与PoC 2025-09-29:准备公告以供公开披露和CVE提交。