
PoC & dokumentasi untuk CVE-2026-7275: Moodle Google Drive Repository (repository_googledocs) — Path Traversal / Arbitrary File Write yang dapat mengarah ke RCE pada versi Moodle yang belum dipatch.
PoC 与文档 for CVE-2026-7275: Moodle Google Drive 存储库 (repository_googledocs) — 路径遍历 / 任意文件写入,可导致未打补丁的 Moodle 版本 RCE。
免责声明: 仅用于授权的安全研究、审计和防御教育。请勿在未经书面许可的系统上使用。
| 字段 | 值 |
|---|---|
| CVE | CVE-2026-7275 |
| 公告 | MSA-26-0006 |
| 追踪器 | MDL-88423 |
| 组件 | repository_googledocs |
| CWE | CWE-22(路径遍历) |
| 严重性 | 严重 (CVSS ~9.1) |
| 受影响版本 | Moodle 5.1.0–5.1.3, 5.0.0–5.0.6, 4.5.0–4.5.10 |
| 修复版本 | 5.1.4, 5.0.7, 4.5.11 |
Moodle 的 Google Drive 插件使用 文件名 元数据 ($originalfile->name) 从 Google API 下载文件。在打补丁之前,此名称未经清理直接传递给 prepare_file(),因此类似 ../../../../public/shell.php 的有效负载可以将文件写入临时目录之外 → 如果 webroot 执行 PHP,则可能导致 RCE。
无需知道绝对路径 —— 仅需相对的遍历(重复的 ../)即可从随机临时文件夹跳出。
├── README.md ← 摘要(本文件)
├── CONTRIBUTORS.md ← 0xNuts + Cursor
├── EXPLOIT.md ← 攻击链、有效负载、前提条件
├── PATCH.md ← 补丁分析与缓解措施
└── poc/
└── demo_path_traversal.py ← 本地补丁前 vs 补丁后演示
python poc/demo_path_traversal.py
输出显示 ESCAPE(补丁前)与 contained(补丁后)的路径。
// public/repository/lib.php — prepare_file()
return sprintf('%s/%s', make_request_directory(), clean_param($filename, PARAM_FILE));
完整详情见 PATCH.md
| 0xNuts | @ExDev994 — 首席研究员、PoC、文档 |
| Cursor | cursor.com — 联合研究员、静态分析、漏洞与补丁编写 |
详情见 CONTRIBUTORS.md
/*
* CVE-2026-7275 — 破解以理解,打补丁以防御。
* 贡献者: 0xNuts (@ExDev994) + Cursor
*/
| 条件 | 详情 |
|---|
| Moodle 账户 | 已认证用户 |
| 能力 | repository/googledocs:view |
| OAuth | Google Drive 已关联到用户的 Moodle 账户 |
| 插件 | repository_googledocs 已启用 |
| 版本 | 未打补丁 (< 5.1.4 / < 5.0.7 / < 4.5.11) |