request-free-img

WebStack主题重大安全漏洞详解:未授权任意文件上传导致网站被植入Webshell

WebStack主题重大安全漏洞详解:未授权任意文件上传导致网站被植入Webshell

正在逛街,突然收到阿里云发来的通知说我的网站发现webshell后门。

立刻赶回家登录管理后台查看,好家伙,几条安全告警,都是紧急,点击查看详情。

安全告警详情

事件类型是,发现网站后门文件,会对任意文件删除,或者主机文件信息进行探测,或者是任意文件写入。

并且还给出了具体的webshell文件的详细路径。

Webshell文件分析

赶紧把这个php webshell文件下载下来,用Claude Code分析一下,看看它会干些什么。

Claude Code说,这是一个php webshell,具体是一个文件上传/管理型后门程序。

这个shell有5个核心功能:

  1. 文件上传
  2. 远程下载
  3. 文件删除
  4. 文件列举
  5. 目录清空

并且这个webshell无认证保护,任何人都可以访问该文件以使用全部功能。

Claude Code还给出了攻击链示例,很简单只需要上传这个php,然后直接访问它就可以获得服务器的控制权限。

总之,这是一个功能完整的后门webshell,通常用于植入到web站点。

漏洞来源定位

那它又是怎么被上传到我的网站中的呢?

经过一番简单的日志定位,我锁定到我的子站中所使用的这个叫WebStack的WordPress主题。

既然定位到是从这个WordPress主题的安全漏洞上传的webshell,那就好说了。

WebStack主题安全分析结果

那就再用Claude Code对这个WordPress主题进行一次安全分析。

这里我已经把安全分析的结果生成到文档中了,我们一起来看看。

这里共发现5个安全漏洞,按严重程度依次从高到低排列:

1. 未授权的任意文件上传(最严重)

这是我们网站被安装webshell后门的根本原因。

漏洞原理:

AJAX 处理函数 io_img_upload 它同时注册了 wp_ajax_nopriv_img_uploadwp_ajax_img_upload

这里涉及到一些WordPress的开发知识,在WordPress中 nopriv 的action表示未登录用户就可以触发的操作,而不含nopriv的action是指只有登录用户才可以触发的操作。

并且,在这个WordPress主题中的上传代码中,虽然扩展名白名单定义了只能上传jpg, png, jpeg格式的文件,但又没有执行检查。

而且MIME类型取自客户端,完全可以伪造。

所以基于以上三个缺陷叠加,导致任何人无需登录即可上传任意 PHP 文件。

Claude Code还给出了攻击示例,只需要简单的发送一个POST请求,就可以上传任意 PHP 文件。

服务器的响应会直接返回上传后的完整Webshell地址。

2. 遗留的可直接执行的上传脚本

这个文件,明确写了已经弃用,功能已经移至ajax.php,但是文件仍然存在于主题目录中,可以被直接访问。

3. 未授权的任意附件删除

它的本意,是删除视频前边介绍的io_img_upload函数中所上传的附件。

然后它在注册action的时候,同样注册了wp_ajax_nopriv_img_remove。

nopriv表示未登录用户也可以执行的操作,那就意味着任意用户都可以删除附件。

4. 开放重定向 + HTML属性注入

go.php是一个外链跳转页面,接收url参数,base64解开后直接拼入html输出,无任何过滤。

5. 混淆的eval代码

主题中搜索组件的javascript逻辑使用了js packer混淆打包。

那正常的主题代码无需混淆,Claude Code认为混淆会在遇到问题时大幅延迟安全人员发现问题的时间。

防御建议与实际防护效果

最后Claude Code还给出了防御建议,在Nginx或者是Apache配置中,禁止uploads目录下执行php程序就可以彻底防止这种webshell带来的危害。

好在,我的网站虽然被人植入了这个webshell后门,但是因为我的Nginx是配置了禁止uploads目录下执行php程序的,所以这个PHP后门根本就没有执行。

Webshell实际界面演示

事情到这里可能有些网友也想看看这个webshell运行起来到底是什么样子。

那我们就运行一下它。

这是运行后的样子:

它有一个主菜单,能列出文件,也可以清除上传的文件。

还有一个上传表单用于上传文件,然后指定服务器的文件地址就可以下载文件,也可以删除服务器上的文件。

底部还有一些使用说明。

很简单的一个webshell程序。

事件影响范围

从2026年4月中旬开始,使用 WebStack 导航主题的 WordPress 站点遭遇大面积入侵。

攻击者利用主题内置的图片上传接口,无需登录即可上传任意 PHP 文件(webshell),进而完全控制服务器。

漏洞修复情况

既然都分析出漏洞了,那么让Claude Code去修改修复这些漏洞也是分分钟的事情,这里我就不赘述了。

修复所有漏洞后的代码我已经开源在GitHub上了。

我这里进行了2轮漏洞分析,并修复,将这个主题中已知的和潜在的所有问题全部修复。

所以你也有在使用这个主题,那就赶紧更新一下吧。

总结提醒:正在使用WebStack主题的朋友,请务必尽快更新到修复版本,避免遭受同样的入侵风险。


更多问题探讨,请关注公众号:程序员角