PHP/OpenCart网站遭CoinHive挖矿脚本入侵,求彻底清除方案
这种隐藏的挖矿脚本确实挺头疼的——尤其是你已经排查了源码和数据库却没找到痕迹,大概率是服务器层面的篡改或者缓存、第三方依赖出了问题。我处理过不少OpenCart的这类入侵,下面是一套经过验证的彻底清除方案,一步步来:
第一步:排查服务器层面的篡改(最常见根源)
- 检查PHP全局配置:很多挖矿脚本会通过修改
php.ini里的auto_prepend_file或auto_append_file参数,让PHP执行任何脚本前自动加载恶意文件。登录服务器找到你的PHP配置文件(路径可能是/etc/php/[你的PHP版本]/apache2/php.ini或/etc/php/[版本]/cli/php.ini,依环境而定),搜索这两个参数,如果后面跟着陌生文件路径,直接删除该行,然后重启Web服务器(Apache/Nginx)。 - 扫描Web服务器配置:检查Apache的
httpd.conf以及全站所有目录的.htaccess文件,看有没有添加php_value auto_prepend_file这类异常指令,或者可疑的Rewrite规则。Nginx用户则检查nginx.conf和站点配置文件,排查fastcgi_param中的异常设置。 - 查找隐藏恶意文件:用命令行搜索网站根目录下包含挖矿脚本关键词的文件,替换成你的网站路径:
找到后直接删除。另外可以排查最近7天新增/修改的文件,找可疑项:find /var/www/html -type f -name "*.php" | xargs grep -l "coinhive"find /var/www/html -mtime -7 -type f
第二步:清理OpenCart的缓存与第三方依赖
- 清空所有缓存:OpenCart的缓存通常在
system/cache、storage/cache(不同版本路径可能有差异),直接删除目录内所有文件——恶意脚本常藏在编译后的模板缓存里,清缓存能立刻清除这类隐藏代码。 - 排查第三方主题/插件:非官方的主题和插件是重灾区。先禁用所有第三方扩展,逐个重新启用,看哪个启用后挖矿脚本重现,找到后直接删除该扩展,或替换为官方市场的干净版本。另外手动检查主题的
header.tpl、footer.tpl这类全局模板文件,确认没有被篡改。 - 覆盖核心文件:下载对应版本的官方OpenCart安装包,解压后将
admin、catalog、system目录的文件(保留config.php和admin/config.php配置文件)全部覆盖,确保核心文件未被篡改。
第三步:数据库深层排查
- 检查全局设置字段:登录OpenCart后台,进入「系统->设置->编辑商店->服务器」,查看“自定义代码”“页脚代码”这类字段是否被添加挖矿脚本。
- 查询数据库敏感字段:用SQL查询检查
setting表或layout表中是否藏有恶意代码(替换你的表前缀,默认是oc_):
找到后清空对应字段的值。SELECT * FROM oc_setting WHERE value LIKE '%coinhive%'; SELECT * FROM oc_layout WHERE content LIKE '%coinhive%'; - 清理异常管理员账号:检查后台管理员列表,删除陌生账号,重置现有管理员的密码并限制权限,防止攻击者再次入侵。
第四步:加固服务器防二次入侵
- 全量更新软件:将PHP、OpenCart核心、所有主题插件更新到最新版本,修复已知漏洞。
- 设置正确文件权限:网站目录权限设为755,文件权限设为644,禁止777权限;
config.php和admin/config.php可设为444,防止被篡改。 - 启用安全防护:安装OpenCart官方安全插件(如Security Pro),或在服务器层面配置ModSecurity防火墙,拦截恶意请求。
- 禁用PHP危险函数:在
php.ini中禁用exec、shell_exec、passthru等危险函数,缩小攻击者的操作空间。
内容的提问来源于stack exchange,提问作者user7997603
相关产品推荐
相关产品推荐

