CVE-2026-31857 是 Craft CMS 关系条件规则中的一个远程代码执行漏洞。BaseElementSelectConditionRule::getElementIds() 将用户可控的输入渲染为未沙箱化的 Twig 模板。已通过身份验证的控制面板用户可以通过元素列表端点提交精心构造的条件,从而在服务器上执行命令。无需管理员权限。
Craft CMS 4.0.0-beta.1 至 4.17.3 以及 5.0.0-RC1 至 5.9.8 均受影响。本 PoC 使用 Craft 5 的元素索引请求格式。
需要 Python 3,仅使用标准库。提供基础 URL 和控制面板用户名;脚本会提示输入密码:
python3 poc.py https://craft.example editor
在 cmd> 提示符下输入命令,或输入 exit 退出。当前工作目录在命令之间保持不变。要启动长时间运行的命令,请以 & 结尾;其输入和输出与 HTTP 请求分离,输出将被丢弃。通过响应头返回的命令输出限制为最后 1200 字节。