abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-backup-config-path
类别: 文件写入遗留问题 可达性: 远程
Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation
CVE-2023-29246 通过 Path.of 修复了 Admin Config Type.PATH 上的 NUL 注入。BackupImport.importConfigs 仍然在没有 Path.of 的情况下写入这些行。一次 ADMIN_BACKUP 恢复会存储一个原始的转换器路径。在 Java 21 上,ProcessBuilder 也会拒绝 NUL,因此这是 29246 sink 的遗留问题,而不是新的 argv RCE。
| ID | 暂无 CVE |
| 类别 | 文件写入遗留问题(CVE-2023-29246 的遗留问题) |
| 可达性 | 远程(已认证的 ADMIN_BACKUP 恢复) |
| CWE | CWE-20, CWE-22 |
| CVSS | 高:6.5 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H |
| 产品 | Apache OpenMeetings |
| 受影响版本 | 9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f) 备份导入 |
| 认证 | ADMIN_BACKUP(安装程序管理员拥有该权限) |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1:18160。apache/openmeetings:min-9.1.0 加上 Temurin 21。 |
我固定了标签 9.1.0。没有 NUL 载荷。没有 ffmpeg 执行。
持有 ADMIN_BACKUP(安装程序管理员,或被植入的备份管理员)。恢复一个备份 zip,其配置将 imagemagick_path / ffmpeg 设置为任意字符串。
| 方法 | Sink | 权限 |
|---|---|---|
admin.sh -r / Wicket 备份恢复 | BackupImport.importConfigs cfgDao.update Type.PATH,无 Path.of | 完整性(实验证明): configuration.path.imagemagick 和 path.ffmpeg 被存储为 PATH /tmp/OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS。 |
| 后续转换任务(推断) | 来自这些行的 imagemagick/ffmpeg/sox/office argv | 完整性 / 可用性(推断): 转换器指向攻击者路径。Java 21 ProcessBuilder 仍然拒绝 NUL。未实际验证。 |
实验证明 vs 推断: 存储的 Type.PATH 见证字符串是实验证明的。转换器执行是推断的。NUL argv RCE 在此 JDK 上已关闭(Path.of 上抛出 InvalidPathException Nul character not allowed;ProcessBuilder 也拒绝 NUL)。
对照: Path.of 接受此 Unix 见证路径。遗留问题是导入时缺少检查,而不是对正常 Unix 路径的 Path.of 绕过。UI ConfigForm 仍然使用 Path.of。
需要: ADMIN_BACKUP。一次恢复。Wicket /admin/backup/upload 使用 REST SID 返回访问被拒绝(需要 websocket Client SID)。实验使用了 admin.sh -r,同样是 BackupImport.performImport。
| 攻击面 | 原因 |
|---|---|
| Admin Config UI PATH 键 | Path.of(ConfigForm)。NUL 会抛出异常。 |
| Java 21 上 ProcessBuilder 中的 NUL | 被拒绝。CVE-2023-29246 RCE 在此 JDK 上无法重放。 |
| ROOM / LOGIN 恢复 | 没有 ADMIN_BACKUP。 |
29246 修补了 UI。我在 importConfigs 中搜索 Path.of。重映射 imagemagick_path → path.imagemagick 强制 Type.PATH 并更新 DAO。与 UI 在恢复后使用的类相同。
cd lab
./run.sh
回环 https://127.0.0.1:18160/openmeetings。见证最后一行:
SUCCESS OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS
在 BackupImport.importConfigs 中运行与 ConfigForm 相同的 Path.of / Type.PATH 校验器。在 cfgDao.update 之前拒绝 NUL 和非规范转换器路径。
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]