Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-14871 — osTicket 中 ajax.tickets.php 的 BOLA/IDOR 漏洞 | 负责任披露 | Kitploit
工具/GitHubGitHub/jfoz1010/cve-2026-14871
漏洞分析漏洞利用Web应用程序漏洞利用信息收集渗透测试学习与教育
GitHubjfoz1010/cve-2026-14871

CVE-2026-14871

osTicket 中 ajax.tickets.php 的 BOLA/IDOR 漏洞 | 负责任披露

查看仓库
1个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-14871 - osTicket ajax.tickets.php 中的 BOLA / IDOR 漏洞

对象级授权失效 (BOLA):不安全的直接对象引用 (IDOR)
include/ajax.tickets.php → viewField() 函数
由 @JF0x0r 报告 · 2026年3月27日 状态:已修复 - 修复已在 osTicket v1.17.8 / v1.18.4 中发布


一览

字段详情
漏洞类型BOLA / IDOR(对象级授权失效)
目标osTicket v1.18-git - 提交 2570d69
组件include/ajax.tickets.php
函数viewField() - 第 805–806 行
端点GET /scp/ajax.php/tickets/{ticket_id}/field/{field_id}/view
CVSS 4.0 评分8.2 高危 - AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N
CWECWE-862(缺失授权)、CWE-639(通过用户控制的密钥绕过授权)
状态✅ 已修补 — 已在 osTicket v1.17.8 和 v1.18.4 中修复

关于我

我是 Juan Felipe Oz(@JF0x0r),一名热衷于开源安全的安全研究员。我这样做不是为了赏金,而是因为我坚信人们所依赖的工具应该是安全的。当我发现问题时,我会负责任地报告、妥善记录,并在修复后公之于众。


我发现了什么

在对 osTicket 的 AJAX 子系统进行手动代码审查时,我注意到 ajax.tickets.php 中有些不对劲。viewField() 函数处理查看工单字段数据的请求——它确实会检索工单对象并验证字段是否存在。但它从不检查发出请求的客服人员是否真的有权限访问该工单。

没有 checkStaffPerm()。没有部门验证。什么都没有。

这意味着任何已认证的客服人员,即使是严格限制在单个部门的客服人员,也可以读取系统中任何其他部门的工单字段,只需知道或猜测 ticket_id 和 field_id 即可。这些是连续的整数,很容易枚举。

更让这个问题一目了然的是与 editField() 的对比——它是同一文件中紧挨在上方的姊妹函数。editField() 正确调用了 $ticket->checkStaffPerm($thisstaff, Ticket::PERM_EDIT),并在违规时返回 HTTP 403。写入操作的修复早已实现——只是从未应用到读取操作上。


概念验证:实况演示

我在受控的实验室环境中录制了一段完整的端到端漏洞利用演示:

PoC Video — BOLA/IDOR osTicket

视频演示了以下过程:

  • 搭建包含两个相互隔离部门的实验室环境(Dept-A 和 Dept-B)
  • 客服人员 agent_a 已完成认证,访问权限仅限于 Dept-A
  • 构造针对 Dept-B 机密工单的未授权请求
  • 服务器返回 HTTP 200,受限工单字段数据遭到泄露
  • 修补后重放,显示 HTTP 403 — 权限被拒绝

本仓库中的 exploit.py 脚本自动化了整个攻击链(认证 → 枚举 → 未授权字段访问),在评估期间用于确认该问题的影响范围远超手动测试。


影响

  • 敏感数据泄露 - 任何客服人员都可以跨所有部门读取机密工单字段
  • 水平权限提升 - 部门边界被完全绕过
  • 批量枚举 - 连续的 ticket_id / field_id 整数使批量抓取变得轻而易举
  • 多租户机密性破坏 - 彻底违背了 osTicket 部门隔离模型的核心设计原则

修复方案

在 viewField() 中插入一行代码,紧接在检索到工单对象之后——与 editField() 已经正确执行的操作完全一致。完整的技术细节、diff 和 CVSS 分解见随附的报告。

📄 BOLA_IDOR_osTicket_Report_v2.pdf

✅ 官方补丁(osTicket 团队已确认)

osTicket 确认了该报告,并通过在解析/渲染所请求的字段之前添加 $ticket->checkStaffPerm($thisstaff) 实施了缓解措施——与 editField() 中已有的检查保持一致。现在,员工必须先拥有对父工单的访问权限,才能查看字段数据。

osTicket 建议在公开分享完整漏洞利用步骤之前留出短暂的升级缓冲期。本仓库遵循该建议——请参阅下方的披露时间线。


披露时间线


本仓库中的文件

root@kitploit:~
.
├── README.md                        # This file
├── BOLA_IDOR_osTicket_Report_v2.pdf # Full technical disclosure report
├── exploit.py                       # PoC automation script
└── PoC_osTicket.mov                 # Local copy of the demo video

负责任披露

我在发布任何内容之前,已私下向 osTicket 安全团队报告了此问题。本仓库仅在负责任披露期结束后才公开,现在官方补丁已发布,完整的技术报告可供查阅。如果您是 osTicket 维护者并有疑问,欢迎直接通过 GitHub 联系。


由 @JF0x0r 发现 · 开源安全至关重要。

下载工具
详情参考
补丁提交d590a9770d25159fb7741681f36e23a35f1fb5e9
修复版本v1.17.8 · v1.18.4
官方下载osticket.com/download
发布类型加速安全发布
致谢Juan Felipe Oz(@JF0x0r)
日期事件
2026年3月27日发现并记录漏洞
2026年3月27日报告发送至 [email protected]
2026年6月17日osTicket 确认该问题并分享缓解补丁以供验证
2026年6月17日osTicket 发布包含修复的 v1.17.8 和 v1.18.4(提交 d590a9770d25159fb7741681f36e23a35f1fb5e9)
—CVE 分配待定,通过 GitHub CNA 进行