Nextcloud 35.0.0 — 日历编辑共享者可以将所有者的日历发布到未认证的 URL
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · nextcloud-calendar-sharee-publish
Nextcloud Server 35.0.0 - Nextcloud GmbH
CalDAV PublishPlugin 仅检查 {DAV:}write。所有者限制 limitAddressBookAndCalendarSharingToOwner 默认为 no。你授予某位同事编辑权限的日历,该同事可以将其发布。任何持有该秘密 URL 的人无需登录即可读取你的非 PRIVATE 事件。
对你的日历拥有编辑权限的恶意行为者可以将其变为公开 URL。任何持有该 URL 的人无需登录即可读取你的会议和与会者信息。
| ID | 暂无 CVE |
| CWE | CWE-284, CWE-862 |
| CVSS | High: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N |
| 产品 | Nextcloud Server |
| 受影响版本 | 35.0.0 (da02f41) 官方 nextcloud:35.0.0-apache |
| 认证 | write-sharee,随后为未认证的公开读取 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
你以可编辑权限与某位同事共享日历。该同事发送 publish-calendar。Nextcloud 随即生成一个公开日历 URL。
然后:
PRIVATE 对象)日历的重新共享是被禁止的。发布则不是。所有者限制配置存在,且默认关闭。
PublishPlugin 检查 {DAV:}write,然后检查 dav / limitAddressBookAndCalendarSharingToOwner,其默认为 no。当 isShared() 时,Calendar::updateShares 禁止重新共享。发布是另一种动词。写 ACL 仍然向编辑权限的共享者授予 {DAV:}write。
我搭建了官方 nextcloud:35.0.0-apache。所有者日历 labcal 中有一个非 PRIVATE 事件,其 SUMMARY 为 NEXTCLOUD-CAL-SHAREE-PUBLISH-WITNESS。
首先我发送了 MKCALENDAR。Sabre 返回 405 MethodNotAllowed。我仍然 PUT 了该 VEVENT。201。日历就在那里。集合创建动词是错的门,而不是错的房子。
以读写权限共享给 sharee。Sharee POST CS:publish-calendar 返回 202。对公开 URL 的未认证 PROPFIND 包含了该见证字符串。
cd lab
./run.sh
目标仅限 http://127.0.0.1:18344。
SUCCESS NEXTCLOUD-CAL-SHAREE-PUBLISH who=write-sharee unauth-read=yes NEXTCLOUD-CAL-SHAREE-PUBLISH-WITNESS
要求发布操作使用所有者主体,或者默认开启所有者限制,并且仍然拒绝 isShared() 日历的发布。重新共享已被禁止。发布也应如此。
GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。不提供任何担保。