lukasz-rybak/CVE-2025-67875

GitHub: lukasz-rybak/CVE-2025-67875

一份利用 ChurchCRM IDOR 与访问控制绕过实现存储型 XSS 的 PoC 复现,聚焦管理员会话劫持场景。

Stars: 0 | Forks: 0

# CVE-2025-67875:ChurchCRM 通过人员属性赋值导致的存储型 XSS 漏洞,进而引发管理员会话劫持 ## 概述 | 字段 | 详情 | |---|---| | **CVE ID** | [CVE-2025-67875](https://nvd.nist.gov/vuln/detail/CVE-2025-67875) | | **严重性** | 高危 | | ** advisory** | [查看 advisory](https://github.com/ChurchCRM/CRM/security/advisories/GHSA-fcw7-mmfh-7vjm) | | **发现者** | [Lukasz Rybak](https://github.com/lukasz-rybak) | ## 影响产品 - **ChurchCRM/CRM** ## 详情 ### 摘要 ChurchCRM 6.3.0 及更早版本中存在一个严重的权限提升漏洞。具备特定中级权限("编辑记录" 和 "管理属性和分类")的认证用户,可以向管理员个人资料注入持久的跨站脚本(XSS)有效载荷。当管理员查看自己的个人资料页面时,该载荷将执行,从而允许攻击者劫持管理员会话、执行管理操作并完全接管账户。 此漏洞是两个独立缺陷的组合:一个是不安全的直接对象引用(IDOR),允许任何用户查看其他用户的个人资料;另一个是访问控制绕过漏洞,允许具有通用编辑权限的用户修改其他用户的记录属性。 ### 细节 攻击链如下: 1. **`PersonView.php` 中的 IDOR**:`PersonView.php` 开头没有授权检查。任何认证用户都可以查看其他任何用户的个人资料页面(例如,`PersonView.php?PersonID=1` 对应管理员),只需知道其 ID 即可。 2. **`PropertyAssign.php` 中的访问控制绕过**:"分配新属性"功能可从其他用户的 `PersonView.php` 页面访问,并引导用户至 `PropertyAssign.php`。该脚本会正确检查用户是否具备通用的 `isEditRecordsEnabled()` 权限,但**未执行对象级别的授权检查**,以验证用户是否被允许编辑 URL 中传递的特定 `PersonID`。这使得具有"编辑记录"权限的用户可以修改系统中任何人的属性,包括管理员。 3. **存储型 XSS 向量**:攻击者可以利用这两个缺陷,导航至管理员个人资料页面,并使用"分配新属性"表单将恶意 XSS 有效载荷保存至管理员记录中。文本类型属性的 `Value` 字段在输入时未经过适当净化(仅应用了 `strip_tags`,该方法无法移除事件处理属性),在输出时也未进行编码,导致存储型 XSS。 * **输入处理(`src/PropertyAssign.php`)**:仅应用 `strip_tags()` 后保存属性值,这允许 `onerror` 等事件处理属性。 * **易受攻击的输出汇(`src/PersonView.php`)**:将存储的属性值直接渲染到 HTML 中,未使用 `htmlspecialchars()`,导致有效载荷执行。 // src/PersonView.php, line ~722 ```html // 易受攻击:原始输出 ``` ### 概念验证(PoC) 本概念验证展示了具备特定中级权限的用户如何将存储型 XSS 有效载荷注入主管理员个人资料。 **前提条件:** * 攻击者拥有一个启用了以下两个特定权限的账户: 1. `编辑记录` 2. `管理属性和分类` **场景:** 1. **以攻击者身份登录:** 使用具备上述权限的账户登录。 image 2. **定位管理员目标:** 直接导航至管理员个人资料页面,通常为 `PersonID=1`。 http://localhost:8101/PersonView.php?PersonID=1 (由于 `PersonView.php` 中的 IDOR,访问被允许。) image 3. **注入有效载荷:** * 在管理员个人资料页面,向下滚动至 **已分配属性** 选项卡。 * 在"分配新属性"表单中,选择文本类型的属性(例如"测试")。(由于"编辑记录"权限,该表单可见。) * 在弹出的 **Value** 文本区域中,输入以下 XSS 有效载荷: `` * 点击"分配"按钮。有效载荷现已存储在管理员记录中。(由于 `PropertyAssign.php` 中的访问控制绕过,分配得以实现。) image image 4. **触发攻击:** * 攻击者现在可以等待管理员登录并查看其个人资料。 * 当管理员导航至自己的个人资料页面(`PersonView.php?PersonID=1`)时,有效载荷将立即执行,弹出警告框。攻击者可使用更复杂的有效载荷来窃取管理员的会话 Cookie。 image image ### 影响 这是一个严重的权限提升漏洞。它允许具备特定提升(但非管理员)权限的用户完全控制管理员账户。通过劫持管理员会话,攻击者可以执行管理员可进行的任何操作,包括创建新管理员账户、删除数据,并可能与其他漏洞结合,实现服务器完全沦陷。 ### 归属 报告者:Łukasz Rybak ## 参考 - https://github.com/ChurchCRM/CRM/security/advisories/GHSA-fcw7-mmfh-7vjm ## 免责声明 本 CVE 遵循协调漏洞披露(CVD)实践进行负责任披露。此处提供的信息仅用于教育和防御目的。
标签:Broken Access Control, ChurchCRM, CISA项目, CVE-2025-67875, IDOR, Modbus, OpenVAS, PHP, Session Hijacking, Web安全, XSS, 不安全的直接对象引用, 会话劫持, 协议分析, 多模态安全, 存储型XSS, 安全漏洞, 数据可视化, 无线安全, 权限提升, 漏洞, 漏洞情报, 特权提升, 管理员劫持, 自动化分析, 自动化部署, 蓝队分析, 访问控制绕过, 足迹分析, 跨站脚本