帝国CMS(EmpireCMS)是一款在国内使用多年的内容管理系统,凭借灵活的模板机制和较高的静态生成效率,积累了大量企业、媒体和个人站点用户。所谓后台get webshell漏洞,指的是攻击者在取得帝国CMS后台管理权限之后,无论是通过弱口令爆破、撞库,还是借助SQL注入等前置漏洞进来的,利用系统自带功能把恶意PHP代码写入服务器,生成一个可以远程执行命令的木马文件,也就是安全圈常说的webshell。

需要特别说明的是,这类问题严格来讲属于后台功能性风险叠加安全配置不当的组合问题。帝国CMS的模板引擎本身就支持嵌入PHP代码,数据库备份功能也允许管理员指定备份参数,这些设计在正常运维场景下是便利,但一旦后台失守,它们就会变成攻击者手中的武器。因此很多安全研究者把它归类为后台getshell,与传统的SQL注入、文件上传绕过等漏洞有所区别。
从危害程度看,webshell一旦落地,攻击者就等于拿到了服务器的遥控器:可以随意查看和下载数据库、篡改页面内容、挂马挖矿、以此为跳板攻击同服务器上的其他站点,甚至进一步提权控制整台服务器。这也是为什么后台get webshell在安全事件定级中往往被列为高危。
漏洞成因分析:恶意代码为什么能写进服务器
帝国CMS后台之所以容易被getshell,根源在于多个功能点都涉及把用户提交的内容写进服务器文件这个动作,而老版本对这些写入内容的过滤和校验并不充分,再加上默认部署方式下目录权限普遍偏松,风险就被进一步放大。
第一个典型成因是模板管理功能。帝国CMS支持在模板中直接书写PHP代码段,页面生成时这些代码会被原样执行。这个机制本意是方便开发者实现个性化功能,但意味着任何能登录后台、拥有模板编辑权限的账号,都可以在模板里夹带恶意代码,保存并生成页面后访问对应地址,代码就会在服务器上运行,效果等同于直接种下木马。
第二个成因是数据库备份与恢复模块。备份功能会将数据表内容导出成文件存放在服务器上,备份路径、备份文件名等参数由后台提交。如果程序对路径缺少合法性校验,攻击者就可能把备份文件写到Web可访问的目录下,并让文件内容中包含可执行的PHP代码,从而把一次普通的数据备份变成木马落地。历史上多个老版本都曝出过此类问题。
第三个成因是自定义页面、自定义列表以及系统模型字段管理。这些功能同样允许管理员提交包含代码的内容并生成文件,部分版本存在过滤被绕过的情况。此外,一些老旧版本还存在上传环节校验不严、变量未初始化等问题,可以与上述功能点组合利用,进一步降低攻击门槛。
常见攻击路径盘点与风险对照
结合公开的安全通报和实际应急处置案例来看,帝国CMS后台get webshell的路径主要集中在几个功能点上,下表做了汇总,方便站长对照自查。
| 攻击入口 | 利用原理 | 风险等级 |
|---|---|---|
| 模板管理 | 模板支持嵌入PHP代码,直接夹带恶意代码并生成页面 | 高 |
| 数据库备份 | 控制备份路径与内容,将备份文件写成可执行的PHP文件 | 高 |
| 自定义页面与列表 | 新建页面时提交恶意代码,生成文件后直接访问触发 | 高 |
| 系统模型字段 | 在字段处理函数或表单替换代码中注入恶意逻辑 | 中高 |
| 文件上传接口 | 老版本上传过滤不严,直接上传脚本类文件 | 中 |
值得注意的是,这些路径的前提几乎都是攻击者已经进入后台。所以完整的攻击链条通常是:先通过弱口令、默认后台路径被爆破、SQL注入或管理员凭证被窃取等方式拿到后台权限,再利用上述功能点完成getshell。排查和加固时,不能只盯着最后写文件的那一步,前置的入口同样要封堵,否则修了东墙漏西墙。
如何判断网站是否已被植入webshell
如果怀疑站点已经被入侵,可以从三个方向入手排查。首先是文件层面:重点检查模板目录、备份目录(例如e/data下的相关子目录)、上传附件目录,以及网站根目录下是否出现陌生的PHP文件。可以按修改时间倒序排列,找出近期被改动过的文件;也可以在服务器上搜索文件内容,看是否包含常见危险函数的调用特征。
其次是日志层面:分析Web访问日志,重点关注后台目录的异常登录记录、对陌生PHP文件的POST请求、来自异常IP的高频访问。如果发现某个不知名的文件在持续接收POST请求,基本可以判定为webshell在接收指令。
最后是数据库层面:检查管理员账号是否有异常新增、管理员密码是否被篡改、系统参数是否被修改过。条件允许的话,借助专业的Webshell查杀工具做一次全站扫描,或者直接联系安全服务商协助处置,会比人工排查更彻底。
修复方案:三步堵住漏洞
第一步:升级到官方最新版本
帝国CMS官方针对已曝出的漏洞发布过多次安全更新,升级是修复已知问题最直接有效的方式。升级前务必完整备份网站文件和数据库,按照官方升级文档逐步操作,避免中途出错导致数据丢失。长期停留在7.2、7.5等老版本且从未打补丁的站点,是这类攻击的重灾区,应当优先处理。
第二步:改造后台安全配置
升级之外,后台自身的防护必须跟上。修改默认后台路径,不要继续使用安装时默认的后台目录;为管理员设置独立且足够复杂的密码,并开启登录验证码;有条件的话在服务器层面做访问控制,让后台仅允许特定IP访问;同时配置登录失败锁定策略,防止被脚本持续爆破。
第三步:收紧服务器目录权限
在服务器层面,关键目录的权限要重新规划。上传附件目录、静态文件生成目录,应通过Web服务器配置禁止执行PHP脚本,只允许读写静态资源;模板、备份等敏感目录去掉不必要的写入权限;Web运行账户遵循最小权限原则,避免对整站目录拥有完全控制权。这样即使后台再次失守,恶意代码也难以落地执行,等于给网站加了第二道保险。
修复的核心思路可以概括为一句话:让攻击者进不来后台,进来了也写不进文件,写进去了也执行不了。
日常安全加固建议
漏洞修复不是一劳永逸的事,建议站长建立常态化的安全习惯。定期关注官方安全公告并及时打补丁;定期备份网站文件和数据库,并把备份存放在服务器之外,防止被勒索或恶意删除;定期更换后台密码,避免多个站点共用同一套口令;在服务器上部署WAF或安全防护软件,对异常的文件写入行为做实时拦截。
对于已经确认被入侵的站点,处置顺序建议是:先限制访问保留现场,备份日志和可疑文件用于溯源;然后彻底清除webshell和被篡改的文件,最好对照官方原版程序逐一核对文件差异;接着完成版本升级和权限加固;最后重置所有账号密码,并持续观察几天访问日志,确认没有残留后门再恢复正常运营。切忌只删掉看得见的木马文件就草草了事,有经验的攻击者往往会在多个位置留有备用后门,等着风头过去卷土重来。

