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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
nextcloud-federated-ocm-token — Nextcloud 35.0.0 — 联邦共享密钥是一个未限定作用域的应用密码,可访问共享者的整个文件树 | Kitploit
工具/GitHubGitHub/abraxas/nextcloud-federated-ocm-token
漏洞分析漏洞利用Web应用程序漏洞利用信息收集Web安全渗透测试身份验证实验室与实践

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHub
abraxas/nextcloud-federated-ocm-token

nextcloud-federated-ocm-token

Nextcloud 35.0.0 — 联邦共享密钥是一个未限定作用域的应用密码,可访问共享者的整个文件树

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

Abraxas Labs - nextcloud-federated-ocm-token

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  nextcloud-federated-ocm-token

nextcloud-federated-ocm-token

Nextcloud Server 35.0.0 - Nextcloud GmbH

联邦共享密钥会以未限定作用域的 PERMANENT_TOKEN 应用密码形式为共享者生成。接收方 API 会将其作为 refresh_token 返回。将其作为 Bearer 在发送方 WebDAV 上重放,即可登录为共享者并读取从未被共享的文件。

与你联邦共享一个文件的恶意行为者,可以在你的 Nextcloud 上以你的身份登录、绕过 2FA,并读取或覆盖你的所有文件,而不仅仅是你共享的那一个。

ID暂无 CVE
CWECWE-269, CWE-287
CVSS严重:8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N(联邦接收方)。公开链接转换更严重(对端无需接收方账户)。
产品Nextcloud Server
受影响版本35.0.0(da02f41)官方 nextcloud:35.0.0-apache
认证联邦接收方(或公开链接转换者)
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

攻击者能做什么

你将一个文件或文件夹共享给另一个 Nextcloud 上的 bob。Nextcloud 会生成一个 32 字符的密钥,将其存储为你的应用密码,并将该密钥作为 refresh_token 交给 Bob。

随后 Bob(或任何将你的公开链接转换为联邦共享的人)可以:

  • 在你的服务器上以你的身份登录
  • 读取你主目录中的每个文件,而不仅仅是共享节点
  • 覆盖这些文件
  • 绕过你的 2FA(应用密码路径)

他们不会在主机上获得 PHP shell。他们不需要你的密码。不要接受该共享,也不要先调用 OCM access-token:该交换会锁定文件系统作用域。本实验证明的是交换前的密钥。


我是如何发现的

共享本应只是共享。一个文件。一个文件夹。我阅读了 tag v35.0.0 上的 FederatedShareProvider::createFederatedShare。它为共享者生成了一个 32 字符的密钥作为 IToken::PERMANENT_TOKEN,且没有作用域限制。PublicKeyToken::getScopeAsArray 默认 SCOPE_FILESYSTEM => true。这就是一个应用密码。Session::tryTokenLogin 接受永久 Bearer。

OCM 交换相关工作(PR #57234 / #57166)已经在首次交换之后锁定文件系统作用域。一份非官方文章使用了该交换后的跳转。我先尝试了它。在此代码树上,交换后的令牌是 TEMPORARY,名为 OCM Access Token,且 /remote.php/dav 会拒绝它(allowOcmAccessToken 为 false)。DAV 说了不。

所以我没有进行交换。ocm_discovery_enabled 保持为 false,这样接收方就不会替我交换它。两个官方 nextcloud:35.0.0-apache 实例,overwrite.cli.url 设为 docker DNS(http://sender / http://recipient)。将其保留为 127.0.0.1 会导致 S2S 与自己通信。

Alice 将一个文件共享给 bob@http://recipient。Bob 读取待处理共享。refresh_token 长度为 32。access_token 长度为 0。对 Alice 的私有见证文件(从未在共享中)进行未认证 Bearer GET,返回 200,X-User-Id: alice。


实验环境

cd lab
./run.sh

目标仅为 http://127.0.0.1:18340(发送方)和 :18341(接收方)。

SUCCESS NEXTCLOUD-OCM-PERMANENT-TOKEN who=federated-recipient uid=alice NEXTCLOUD-OCM-PERMANENT-TOKEN-WITNESS
  • lab/docker-compose.yml
  • lab/Dockerfile
  • lab/run.sh

修复方案

从首次插入起,就以文件系统作用域为 false 生成联邦密钥。不要在 /remote.php/dav 上接受该密钥作为 Bearer/Basic。首次交换已经锁定 FS 作用域;创建时本就不应发放应用密码。


参考资料

  • github.com/nextcloud/server tag v35.0.0
  • 相关 OCM 工作:PR #57234 / PR #57166
  • Abraxas Labs:abraxaslabs.tech · github.com/abraxas · @abraxas_null

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。无任何担保。

下载工具