2024年,全球仍有超过270万个网站运行Joomla。这个数字背后藏着一个反直觉的事实:其中近40%的站点,安装着从未被启用的扩展。
安全研究员Shamini Nirodya最近披露的案例,把这个问题捅破了。她在审计一套企业级Joomla系统时,发现了一款文件共享插件——没人记得它为什么存在,也没人负责维护它。
它就像租来的办公室里,前任租客留下的备用钥匙。你不知道它开哪扇门,但锁匠知道。
被遗忘的代码比漏洞更危险
Nirodya的排查从一次常规扫描开始。系统日志显示,某个`/administrator/components/com_fileshare/`路径下存在异常访问请求。追溯后发现,这款插件在2021年被临时安装,用于一次跨部门文件传输项目。
项目结束后,没人卸载它。更糟的是,它从未进入任何资产清单。
Joomla生态的残酷现实是:核心系统有自动更新,但第三方扩展完全依赖管理员手动管理。官方扩展目录(JED)收录了超过3.7万个插件,其中约15%已被标记为"停止维护"或"存在已知漏洞"。
这款文件共享插件的问题清单包括:未限制文件上传类型、缺乏身份校验的API端点、以及一个可绕过管理后台的RCE(远程代码执行,Remote Code Execution)漏洞。CVE编号显示,该漏洞在2022年就被公开披露,补丁发布于同年6月。
但补丁从未被应用——因为没人知道这里还有个插件。
自动化攻击的狩猎逻辑
Nirodya还原了攻击者的行为路径。这不是定向渗透,而是典型的"广撒网"模式。
攻击脚本首先批量扫描Joomla站点的特征指纹:特定的HTTP响应头、默认路径的元数据泄露、以及扩展目录的公开接口。一旦匹配成功,脚本会交叉比对已知漏洞数据库(如ExploitDB和CVE Details)。
整个过程不需要人工干预。从发现目标到尝试利用,平均耗时不到4秒。
「如果端点存在,它就是攻击面。」Nirodya在报告中写道,「启用状态根本不重要。只要文件还在服务器上,URL还能响应,漏洞就活着。」
这款插件的RCE漏洞允许攻击者通过构造特定的POST请求,在服务器任意路径写入WebShell。Nirodya的蜜罐捕获到的攻击载荷显示,入侵者主要将其用作跳板:部署加密货币挖矿程序、植入反向代理工具,或进一步横向移动至内网。
最讽刺的是,由于插件本身未被使用,它的异常流量从未触发任何业务监控告警。
防御方的结构性盲区
这个案例暴露的不仅是技术漏洞,更是流程失效。
多数企业的Joomla站点采用"核心更新+扩展不管"的策略。安全团队的注意力集中在活跃功能上,废弃代码被默认为"无害残留"。但现代攻击面管理(Attack Surface Management, ASM)的理念恰恰相反:任何未被清点的资产都是负债。
Nirodya建议的修复方案分为三层。第一层是清点:通过文件系统哈希比对或Joomla后台的"扩展→管理"界面,识别所有已安装组件,并与实际业务需求交叉验证。第二层是隔离:对暂时无法卸载的遗留插件,至少通过.htaccess或Web应用防火墙(WAF)规则阻断其端点访问。
第三层最关键——建立扩展的生命周期台账。包括安装时间、责任人、业务目的、以及退役计划。这个流程在敏捷开发环境中常被牺牲,但代价往往由安全团队事后承担。
「我们花了两周排查入侵源头,」Nirodya引用一位客户的反馈,「最后发现是个三年前就该删掉的测试插件。攻击者找到它只用了两分钟。」
你的代码库里,有多少个"从未启用"的扩展还在自动回复HTTP 200?
热门跟贴