Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
openmeetings-calendar-save-idor — Apache OpenMeetings 9.1.0 - 高危 - 远程 - IDOR - LOGIN calendar save 覆盖预约并关闭公共房间 | Kitploit
工具/GitHubGitHub/abraxas/openmeetings-calendar-save-idor
漏洞分析漏洞利用Web应用程序漏洞利用信息收集Web安全渗透测试实验室与实践
GitHubabraxas/openmeetings-calendar-save-idor

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →

openmeetings-calendar-save-idor

Apache OpenMeetings 9.1.0 - 高危 - 远程 - IDOR - LOGIN calendar save 覆盖预约并关闭公共房间

查看仓库
43天前尚未审核
分享

Abraxas Labs - openmeetings-calendar-save-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  openmeetings-calendar-save-idor

openmeetings-calendar-save-idor

类别: IDOR 可达性: 远程

Apache OpenMeetings 9.1.0(9773c59e) - Apache Software Foundation

任何 LOGIN 用户都可以使用另一个预约的 id 并省略 owner 来 POST /services/calendar/。保存谓词从不加载持久化的 owner。随后 CalendarMapper 和 RoomMapper 在关联的 room 上写入 closed / ispublic / name。已注册用户可覆盖他人的会议并关闭公共会议室。

ID暂无 CVE
类别IDOR
可达性远程(已认证 LOGIN REST)
CWECWE-639、CWE-284
CVSS高危:7.6 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
产品Apache OpenMeetings
受影响版本9.1.0(9773c59e1af327bf988018e661f456ae9997c29f)
认证LOGIN(默认自助注册即可获得)
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1:18150。apache/openmeetings:min-9.1.0 加 Temurin 21。

我固定了标签 9.1.0,剥离 9773c59e1af327bf988018e661f456ae9997c29f(2026-07-14)。最新 GA。Java 21。不是 master。

攻击者能做什么

注册(向导 allowFrontendRegister=true)或持有任意 LOGIN 密码。POST /openmeetings/services/user/login 会签发一个 SID。预约 id 是连续的。公共 room id 2 是默认会议室。

方法汇聚点权限影响
POST /services/calendar/?sid= 表单 appointment JSON,省略 owner,使用受害者的 idCalendarWebService.save 谓词(CalendarWebService.java:310-329)完整性(实验验证): 覆盖标题、时间、成员。实验:标题变为 OPENMEETINGS-CALENDAR-SAVE-WITNESS,owner 2→3。
同样的保存;room.closed=trueRoomMapper.get 在受管实体上写入(RoomMapper.java:62-92),然后 dao.update完整性 + 可用性(实验验证): 公共会议室被持久化为 closed=true、isPublic=false。SOAP GET /room/2 返回了该结果。
保存后攻击者 GET 标题/范围响应 DTO 是写入后的行侦察(实验验证): 见证标题。owner 被窃取后受害者范围为空。

实验验证与推断: 保存 HTTP 200、标题、owner 窃取、room 关闭均为实验验证。同一 mapper 上的容量/主持位标志为推断。

前提条件: 到 /openmeetings/services 的网络路径。一个 LOGIN 账户。一个受害者预约 id(连续,或创建一个并等待)。默认开放注册。

保持关闭的相邻攻击面

攻击面原因
DELETE /calendar/{id}owner 或 SOAP/ADMIN。普通 LOGIN 无法删除他人。
范围 / next / 标题读取按 owner 限定。攻击者无法干净地读取原始行。
录制 MP4不同的 ACL(RecordingResourceReference)。
仅 SOAP 的按 userid 列表Right.SOAP。默认注册用户没有该权限。
未认证保存performCall 需要带 LOGIN 的 SID。

我是如何发现的

9.1.0 修复了 CVE-2026-49488(白板 fuid 操作系统读取)。我继续寻找 REST 对象 id。日历删除会检查 a.isOwner(sd.getUserId())。日历保存检查请求 DTO 的 owner,或为 null。CalendarMapper.get 加载 appointmentDao.get(dto.getId()),没有 owner 范围限定。随后 RoomMapper 在 dao.update 之前弄脏 room JPA 实体。

SOAP 列出所有预约记录的是 LMS 集成账户。这个遗留项是 LOGIN 与所有者之间的差异。

实验环境

cd lab
./run.sh

回环地址 https://127.0.0.1:18150/openmeetings。官方 docker 管理员 om_admin / 1Q2w3e4r5t^y。自签名 TLS。见证最后一行:

SUCCESS OPENMEETINGS-CALENDAR-SAVE-WITNESS

建议修复

在保存前加载已持久化的预约。除非是 SOAP/ADMIN,否则要求 a.isOwner(caller)。不要将 RoomMapper 的写入应用到调用者无权主持的房间。将省略的 owner 视为“保留已持久化的 owner”,而不是“调用者成为 owner”。

联系方式

Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]

供应商:[email protected]

下载工具