漏洞概述 标题: 不完整的修复:通过查询字符串在 的 参数中绕过目录遍历 描述: 漏洞类型: 目录遍历 影响版本: (Composer) <= 29.0 修复版本: 无 严重程度: 中等 (6.5 / 10) 详细信息: 在 commit 中引入的安全修复仅检查 URL 的 组件,忽略了 。 攻击者可以在查询字符串中放置 等遍历载荷,绕过安全检查并读取服务器文件系统上的任意文件。 漏洞存在于 和 中。 影响范围 任意文件读取: 具有上传权限的已认证用户可以读取 Web 服务器进程有权访问的任何文件。通过视频缩略图 URL 完全提取通过图像验证的文件(PNG/PEG/GIF)。 信息泄露: 对于非图像文件,文件存在性和大小通过 响应字段泄露。 配置暴露: 服务器配置文件、数据库凭据、 和其他敏感数据可能受到攻击。虽然 PHP 文件会被 删除,但在写入和删除之间存在时间窗口。 安全修复绕过: 直接绕过 commit 中添加的路径遍历缓解措施。 修复方案 推荐修复: 1. 检查完整的 URL: 在 中,应检查完整的 URL(在 URL 解码后),而不仅仅是路径组件。 2. 添加路径验证: 在 的 函数中添加路径验证。 代码示例: Fix 1 — 检查完整的 URL 在 ( ): Fix 2 — 添加路径验证在 ( ): POC 代码 前提条件: 具有上传权限的已认证 AVideo 用户账户和现有视频(已知 )。 1. 识别 AVideo 实例的域名(例如, )。 2. 向 端点发送 POST 请求,其中包含查询字符串中的遍历载荷: 3. 响应将包括 ,指示文件已读取和写入(确认文件存在并泄露文件大小)。 4. 对于通过图像验证的文件(例如,其他用户上传的已知路径中的图像),内容持久存在于视频的缩略图 URL 中并可检索: 5. 非图像文件(例如, 、配置文件)被写入但随后被 删除。然而,文件存在性和大小仍被泄露,并且在写入和删除之间存在竞争条件。