Jellystat SQL注入导致远程代码执行漏洞总结 漏洞概述 Jellystat 1.1.9 版本存在严重的 SQL 注入漏洞,攻击者可利用该漏洞实现远程代码执行(RCE)。 核心原因: 多个 API 端点(如 、 )直接将用户输入的 拼接进 SQL 查询语句。 使用了 的简单查询协议(未使用参数化查询),允许执行堆叠查询。 数据库用户拥有 超级用户权限,且 Docker 容器配置允许执行系统命令。 利用路径: 1. 数据泄露:通过 读取 表,获取管理员账号、密码哈希、API Key 和 Jellyfin 服务器 URL。 2. 权限确认:确认当前用户拥有 等高危权限。 3. 远程代码执行:利用 PostgreSQL 的 功能,在数据库容器内执行任意系统命令(如反弹 Shell)。 影响范围 受影响版本:Jellystat <= 1.1.9 受影响组件: (npm) CVSS 评分:9.1 / 10 (Critical) 攻击复杂度:低 权限要求:低(需要认证用户,但认证令牌易获取) 影响: 完整读取 (包含管理员凭据)。 Jellystat 管理员接管。 Jellyfin 管理员接管(利用泄露的 API Key)。 任意数据库表读取。 远程代码执行:在数据库主机上以 用户身份执行任意命令。 修复方案 1. 主要修复:消除 SQL 注入。将所有拼接的 SQL 查询替换为参数化查询,使用驱动程序的占位符语法(如 )。 示例: 2. 深度防御: 更新 ,使 Jellystat 应用连接到专用的非超级用户数据库角色,仅授予必要权限。 * 考虑撤销应用角色的 、 和 权限。 POC 代码 PoC 1 - 读取 app_config (凭证泄露) PoC 2 - 确认角色是超级用户 PoC 3 - 通过反向 Shell 远程代码执行