事件概述

2026年6月初,Joomla生态爆发了今年最严重的一次安全危机。JCE编辑器(Joomla Content Editor)被发现存在一个未认证的远程代码执行漏洞(CVE-2026-48907,CVSS评分9.8),攻击者仅需发送两个HTTP请求,就能完全控制运行JCE的Joomla网站。

漏洞利用代码已于6月9日在GitHub公开,随后自动化大规模扫描和入侵全面展开。根据mySites.guru的监控数据,在漏洞公开后的48小时内,已有数万个Joomla站点被自动化工具扫描并尝试入侵。

JCE是Joomla生态中安装量最高的编辑器扩展,在中国Joomla用户群体中同样广泛使用。这意味着大量中文Joomla站点正处于直接威胁之下。

漏洞原理:两个请求就能拿下你的网站

漏洞的核心在于JCE的"编辑器配置文件"导入功能。JCE允许管理员通过XML配置文件定义不同用户组的编辑器权限(如允许上传哪些文件类型)。问题出在:在JCE 2.9.99.5之前,这个配置文件导入端点没有做任何身份认证检查

攻击流程极其简单,只需两步:

第一步:导入恶意配置文件

POST /index.php?option=com_jce&task=profiles.import

攻击者发送一个精心构造的XML,该配置文件会:

  • 将排序值设为 -99999,使恶意配置置顶优先匹配
  • 设置 area=0 和 types=1,8,让该配置对所有匿名访问者生效
  • 开启文件浏览器插件,允许上传 php、phtml 等脚本文件
  • 关闭MIME类型验证,绕过文件类型检查

第二步:上传WebShell

POST /index.php?option=com_jce&task=plugin.rpc&plugin=browser&method=upload

恶意配置生效后,攻击者无需登录即可通过JCE的文件浏览器接口上传PHP后门文件,获得服务器的完全控制权。

整个过程无需任何登录凭证、无需任何用户交互,属于典型的"零点击"攻击。从技术角度看,这是JCE组件中一个典型的访问控制缺失漏洞——开发者可能默认该功能仅在后台管理面板中使用,但实际路由暴露在了前端且未做权限验证。

受影响版本与修复方案

受影响范围:

  • JCE Free 和 JCE Pro 所有低于 2.9.99.5 的版本(包括2.7.x、2.8.x、2.9.x全系列)
  • JCE 2.6.x 在默认配置下暂不受此漏洞影响(但该版本已EOL,强烈不建议继续使用)

安全版本:

版本 发布日期 说明
2.9.99.5 6月3日 修复未认证配置文件上传漏洞
2.9.99.6 6月8日 进一步安全加固,推荐所有站点更新到此版本

升级要求:PHP 7.4+,Joomla 3.10+。如果你的站点运行在更旧的PHP版本上,JCE开发者提供了免费补丁包(仅修复此漏洞),但请注意这只是权宜之计。补丁下载地址可在JCE官网获取。

如何检查你的站点是否已被入侵

仅升级JCE而不检查是否已被入侵,可能留下后门。以下是我建议的排查步骤:

1. 检查编辑器配置文件

进入Joomla后台 → 组件 → JCE Editor → 编辑器配置文件,查找非你创建的异常配置。重点关注:

  • 名称类似 "J" + 6位数字的配置(如 J940401)
  • 描述包含 "Pwned" 或 "RCE" 字样的配置
  • 上传文件类型中包含 php 或 phtml
  • 排序值为极端负数(如 -99999)

2. 搜索可疑文件

重点检查以下目录是否存在非预期的PHP文件:

  • tmp/
  • media/
  • images/(特别是子目录中)
  • media/system/js/
  • libraries/joomla/

可疑特征:文件名以 .xml.php 结尾、包含 eval(gzinflate(base64_decode(...))) 等混淆代码、直接调用 shell_exec 的文件。

3. 排查访问日志

在服务器访问日志中搜索包含 "profiles.import" 和 "method=upload" 的未认证POST请求。如果某条记录返回了200状态码,说明该次攻击可能成功。

如果确认已被入侵,处理顺序为:

  1. 保留证据(截图、日志备份)
  2. 删除恶意配置文件
  3. 删除所有可疑PHP文件
  4. 立即更新JCE至2.9.99.6
  5. 重置所有管理员密码和API密钥
  6. 全站安全扫描

注意:必须先删除后门再更新JCE,否则攻击者可能利用已有后门重新部署恶意配置。

深度反思:为什么JCE会成为攻击目标

作为一个资深Joomla开发者,我想分享一些对这次事件的思考。

JCE之所以成为攻击目标,恰恰因为它是Joomla的"标配"扩展。安装量越大,攻击回报越高。这也提醒我们:越流行的扩展,越需要保持警惕

从安全架构角度看,这个问题暴露出一个常见模式:组件开发者往往假设某些功能"只在后台使用",从而忽略了前端路由的访问控制。但实际上,Joomla的组件路由系统并不区分前后台——任何注册了的task都可以从前端URL访问,除非组件代码中显式做了权限判断。

这也是为什么Joomla核心团队一直在推动"最小权限原则"——每个功能点都应该默认拒绝,显式授权。但在庞大的第三方扩展生态中,执行这一原则任重道远。

给中文Joomla用户的行动建议

立即行动(今天必须完成):

  • 检查所有使用JCE的Joomla站点版本
  • 将JCE更新至2.9.99.6
  • 按上文步骤检查是否已被入侵

短期加强(本周内完成):

  • 审查所有Joomla扩展的更新状态,确保没有其他已知漏洞
  • 配置Web应用防火墙(WAF)规则,拦截对 /index.php?option=com_jce&task=profiles.import 的未认证请求
  • 检查服务器上所有可写目录的权限设置

长期策略:

  • 建立扩展更新监控机制,至少在重大安全漏洞发布后24小时内完成更新
  • 定期进行安全审计,包括文件完整性检查和异常配置扫描
  • 考虑使用mySites.guru等专业工具进行自动化安全监控

这次JCE漏洞再次印证了一个道理:在Web安全领域,没有"安装完就不用管"的扩展。每一个第三方组件都是潜在的攻击面,保持更新是对抗安全威胁的最低成本手段。

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前