CVE 报告:LinkStack 链接管理中的不直接对象引用 (IDOR) 漏洞 漏洞概述 产品名称:LinkStack (LinkStackOrg/LinkStack) 受影响版本:<= 4.8.6 (所有版本) 漏洞类型:CWE-639: 通过用户控制的键进行授权绕过 (Authorization Bypass Through User-Controlled Key) 攻击向量:网络 (远程) 认证要求:低 (任何注册用户) CVSS 3.1 基础评分:8.1 (High) CVSS 3.1 向量:AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H 描述: LinkStack 是一个基于 Laravel 9 构建的自托管开源链接管理平台。多个链接管理端点接受用户提供的链接 ID,而未验证经过身份验证的用户是否拥有该目标链接。虽然应用有一个所有权检查中间件 ( ) 能正确验证所有权,但该中间件并未应用于所有修改链接的路由。这允许任何经过身份验证的用户通过提供任意链接 ID 来修改、重新排序或删除其他用户的链接。 影响范围 受影响端点: 1. (修改任何用户的链接 - 严重) 2. (重新排序任何用户的链接 - 中等) 3. (删除任何用户的链接图标 - 中等) 攻击者能力: 劫持任何用户的链接(重定向到钓鱼、恶意软件或篡改页面)。 静默修改链接目标(受害者及其受众不会察觉)。 破坏任何用户的页面(打乱链接顺序或删除自定义图标)。 大规模篡改(枚举链接 ID 并修改平台上的所有链接)。 前提条件: 攻击者必须拥有注册账户(默认启用注册)。 攻击者必须知道受害者的链接 ID(可从公共页面源代码发现)。 不需要特殊的服务器配置。 修复方案 应用中存在一个所有权中间件 ( ),可以正确验证链接所有权。该中间件仅应用于部分路由。 正确应用中间件的路由: 修复建议: 确保上述三个受影响的端点( , , )也应用 中间件,以强制执行所有权检查。 概念验证 (POC) 代码 前置条件: 一个 LinkStack 实例,包含两个用户账户(攻击者和受害者)。 受害者至少有一个链接(例如,链接 ID )。 步骤 1:登录攻击者并获取会话 创建两个用户(一个管理员,一个普通用户)。在管理员账户中创建链接并获取链接 ID。 步骤 2:覆盖受害者链接 以非管理员用户(攻击者)身份登录。在浏览器开发者控制台中执行以下代码: 步骤 3:验证** 以管理员身份重新登录。受害者的链接现在显示 "HACKED BY ATTACKER" 并指向 。