CVE-2024-9571: JeecBoot SQL注入漏洞总结 漏洞概述 漏洞类型:SQL注入 (UNION-based) 受影响产品:JeecBoot (版本 <= 3.9.1) 漏洞成因:在 接口中, 参数被反序列化为 JSON 对象。其中包含特殊键 的值被直接拼接到 MyBatis 的 SQL 语句中(使用 字符串拼接而非 预编译),且未进行任何过滤或校验。 利用条件:需要有效的 JWT Token(普通用户权限即可)。 影响范围 受影响版本:JeecBoot 3.9.1 及以下版本。 危害: 1. 提取数据库名称和版本。 2. 提取管理员密码哈希(用于离线破解)。 3. 确认数据库权限(如 root 权限)。 4. 枚举数据库元数据。 5. 最终可能导致数据泄露、权限提升或服务器被完全控制。 修复方案 1. 移除特殊分支:彻底移除 中对 的特殊处理分支,禁止客户端注入任意 SQL 片段。 2. 实施白名单:如果必须支持动态过滤,应实现字段白名单,验证过滤键是否为预定义的列名,并使用 参数化绑定。 3. 统一安全处理:在 中对所有动态 SQL 输入应用一致的防注入过滤逻辑。 POC/利用代码 1. SQL 注入 Payload (提取数据库名) 2. SQL 注入 Payload (提取管理员密码) 3. 完整 Python 利用脚本