漏洞总结:VULN-004-idor-sqli-update-user.md 漏洞概述 这是一个组合型漏洞,包含 越权访问 (IDOR)、SQL 注入 (SQLi) 和 弱密码哈希 (MD5)。 受影响产品:Chat System Using PHP (v1.0) 漏洞文件: 触发方式:POST 请求,参数 (IDOR), , , (SQLi) 核心逻辑:攻击者可以通过修改 参数覆盖任意用户(包括管理员)的信息。同时,由于 SQL 查询未使用预处理语句,攻击者可以通过注入 语句来批量修改所有用户的密码。 影响范围 完全账户接管:任何已认证用户均可覆盖任意账户(包括管理员)的凭据。 权限提升:低权限用户可重置管理员凭据从而成为管理员。 密码泄露:若提交未更改的密码,数据库将以明文形式存储,导致密码泄露。 大规模账户锁定:利用 SQL 注入可一次性修改所有用户的密码,导致所有用户无法登录。 修复方案 1. 强制所有权验证:确保用户只能更新自己的账户(验证 与 一致)。 2. 使用预处理语句:使用 和 替换原始查询,防止 SQL 注入。 3. 强密码哈希:使用 (BCRYPT) 替代 MD5,并配合 验证。 4. 移除明文回退逻辑:删除代码中“若密码未变则存明文”的逻辑,始终进行哈希处理。 5. CSRF 令牌验证:在表单中添加 CSRF Token 并在服务端验证。 6. 基于角色的访问控制 (RBAC):限制只有管理员才能修改其他用户的账户。 7. 敏感操作二次验证:修改用户名或密码前要求输入当前密码。 概念验证 (PoC) 1. 越权修改单个用户 (IDOR) 2. 批量修改所有用户密码 (SQL 注入) 3. 后端执行的 SQL 语句 (注入后)