CVE-2025-61777CVE-2025-61777是Flag Forge(一个Capture The Flag/CTF竞赛平台)中存在的一个严重安全漏洞。该漏洞存在于版本2.0.0至2.3.2之前的所有版本中,具体涉及管理后台的徽章模板管理API端点。漏洞的根本原因是`/api/admin/badge-templates`(GET方法)和`/api/admin/badge-templates/create`(POST方法)这两个端点在设计上缺少必要的身份认证和授权检查机制。
由于这些管理端点暴露在公网上且无需任何认证即可访问,攻击者可以直接向目标服务器发送HTTP请求,从而获取系统中所有的徽章模板数据,包括敏感的元数据信息(如创建者createdBy、创建时间createdAt、更新时间updatedAt等)。此外,攻击者还可以通过POST请求向数据库中创建任意徽章模板,实现数据库污染。
该漏洞的危害程度极高,CVSS评分达到9.4分(满分10分),属于严重级别。攻击者无需任何特权即可远程利用,无需用户交互,对系统的机密性和完整性造成高影响。虽然对可用性的影响为低(因为攻击主要针对数据而非服务中断),但综合来看,该漏洞可能导致严重的数据泄露、数据库污染以及徽章系统的滥用。Flag Forge项目维护者已在v2.3.2版本中修复了该问题,增加了完整的认证和授权检查机制。
该漏洞的技术原理在于API端点的访问控制缺失(Broken Access Control)。在Flag Forge v2.0.0至v2.3.1版本中,`/api/admin/badge-templates`路由的GET方法和`/api/admin/badge-templates/create`路由的POST方法在中间件层面没有应用任何身份认证或角色授权检查。
从技术实现角度来看,正常的受保护管理端点应当包含以下安全机制:1)身份认证中间件(如JWT验证、Session检查)来确认请求者身份;2)授权检查中间件来验证用户是否具有管理员角色;3)输入验证和清理。然而这些端点直接暴露在公网路由中,任何能够访问该应用的网络用户都可以直接调用。
利用方式非常直接:
1. 信息泄露利用:攻击者通过发送GET请求至`/api/admin/badge-templates`,服务器将返回所有徽章模板的完整数据,包括模板内容、创建者标识(createdBy字段可能包含用户ID或用户名)、时间戳等敏感信息。
2. 数据篡改利用:攻击者通过发送POST请求至`/api/admin/badge-templates/create`,在请求体中构造任意徽章模板数据(如模板名称、描述、图片URL等),服务器将直接将其写入数据库,导致数据库污染或恶意内容注入。
3. 持久化攻击:被创建的恶意徽章模板将在平台中持续存在,可能被用于钓鱼、社会工程攻击或破坏平台的正常运营。
修复方案在v2.3.2中实现:对所有GET、POST、UPDATE、DELETE端点增加了认证要求,并实施授权检查确保仅管理员角色可以访问和修改徽章模板。