Redmine项目管理系统未授权访问漏洞复现

Wayyt  4小时前

Redmine项目管理系统未授权访问漏洞复现

0x00 漏洞概述

Redmine 是一款开源的项目管理系统,基于 Ruby on Rails 框架开发,支持多项目环境、问题跟踪与团队协作,被广泛用于软件研发团队的项目管理。该漏洞的公开描述指出:Redmine 项目管理系统存在未授权访问问题,可导致项目开发信息、开发人员信息、项目源代码等敏感数据泄露,为进一步渗透提供信息。

漏洞的具体表现为:在未持有任何账号凭证的情况下,直接访问系统的项目列表接口即可获得 200 状态码的完整项目列表页面响应。正常情况下,对内部研发系统的访问应经过登录认证,未认证用户不应读取到组织内部的项目清单;该接口绕过这一预期,直接向未认证访客暴露项目列表内容。漏洞类型为未授权访问,CVSS 评分 6.5。

0x01 影响范围

受影响产品为 Redmine 项目管理系统。网络上可通过以下特征识别 Redmine 实例:页面正文包含 Redmineauthenticity_token 字样、HTTP 响应头中出现 _redmine_session= 会话 Cookie、页面包含「Powered by」及 redmine.org 链接,或页面标题为「Redmine」。

该系统存在两种常见部署路径形态:直接部署在站点根目录,或部署在 /redmine 子路径下。项目列表接口相应地位于 /projects/redmine/projects

受影响的具体版本无法核实——该漏洞无 CVE 编号,也未检索到厂商关于受影响版本的公告,版本信息此处从略。

0x02 漏洞分析

Redmine 的项目可见性机制由项目自身的 Public 属性与角色权限共同控制:项目设置中的 Public 选项被勾选时,该项目可被所有用户查看,包括非项目成员;未勾选时仅项目成员可见。在默认的项目列表视图中,系统会依据访客身份过滤可见项目。

本漏洞涉及的访问路径为项目列表页 /projects。当该页面在未认证状态下直接返回项目列表内容时,意味着系统对匿名访客放开了项目列表的读取:未登录用户无需任何凭证即可浏览全部对匿名角色开放的项目条目,包括项目名称、描述与状态等信息。页面同时包含指向各项目 Atom 订阅的链接(/projects.atom),该链接可进一步用于获取项目动态内容。

从利用角度看,这一访问路径的价值在于信息收集:项目列表往往直接反映一个组织正在进行的研发工作、项目命名与人员分工。结合漏洞影响描述,项目开发信息、开发人员信息、项目源代码等敏感数据可能因此泄露,为后续渗透提供信息基础。需要说明的是,未认证访客具体能看到哪些项目条目,取决于目标实例对匿名角色的权限配置(推断)。

0x03 利用链与请求包

利用链为单步请求:未认证状态下直接 GET 访问项目列表接口,依据响应状态码与页面特征判断是否存在未授权访问。系统有两种部署路径,对应两个候选接口,判定逻辑相同,逐一尝试即可。

候选接口路径:

  • /projects(站点根目录部署形态)
  • /redmine/projects/redmine 子路径部署形态)

以第一种部署形态为例,请求包如下:

GET /projects HTTP/1.1

该请求不携带任何自定义请求头,也不需要会话 Cookie、CSRF Token 或其他凭证,即以完全匿名的状态发出。

判定未授权访问存在需同时满足三个条件:HTTP 状态码返回 200,响应体包含 projects-index(Redmine 项目列表页的主体标识),且响应体包含 /projects.atom(项目列表页的 Atom 订阅链接)。三个条件同时满足时,说明未认证访客获取到了真实的项目列表页面而非错误页或登录跳转页。请求以禁止重定向方式发送,直接以首次响应作判定——若目标将未认证访问重定向至登录页,则不会满足上述判定条件。

/projects 不满足判定,应改用 /redmine/projects 重复同样的请求与判定。确认存在未授权访问后,研究者可进一步读取项目列表中的条目信息与 Atom 订阅内容,完成信息收集阶段的复现。

0x04 检测与修复建议

检测方面:排查网络边界上对外暴露的 Redmine 实例,确认 /projects/redmine/projects 的可访问性;对内网部署实例,以文中请求包在未认证状态下测试项目列表接口,若返回 200 且包含项目列表页特征,则存在未授权访问;同时检查访问日志中来自未知来源的对项目列表路径的匿名请求。

修复建议:

1. 核查公网、办公网边界及第三方托管环境中的 Redmine 部署,确认相关接口的暴露范围和版本;

2. 核对厂商公告中的受影响范围,升级至官方修复版本或更高版本;升级前备份配置和数据;

3. 暂不能升级时,限制相关接口来源,补齐服务端认证授权校验,并失效相关会话和凭据;

4. 检查访问日志和操作审计,发现未授权访问后失效相关会话并复核权限配置。

0x05 参考资料

最新评论

昵称
邮箱
提交评论