Drupal站点遭入侵:每日被注入Include代码问题求助
看起来你遇到了非常棘手的Drupal站点持久化后门问题,升级核心和恢复快照没解决,说明黑客已经在服务器或站点里埋下了隐藏的恶意痕迹。我结合这类攻击的常见套路,给你一套逐步排查修复的方案:
一、先搞懂你看到的恶意代码本质
- 你碰到的
<?PHP @include "\157\157\157\157\157\157\157\157\157\157\157\157";是用八进制编码隐藏的恶意路径,解码后就是黑客存放后门的真实位置,这种编码是为了绕过常规的恶意代码检测。 - 那个伪装成
.ico的文件确实是PHP脚本,里面的大型数组应该是黑客用来存储攻击逻辑(比如拦截POST数据、注入恶意内容)的载体。至于重复的79026,大概率是黑客用来标记恶意脚本批次或版本的编号,不用纠结这个数字,重点是清除整个恶意链。
二、全面排查服务器上的隐藏后门
这些步骤要仔细做,黑客往往会留多个后门:
- 找可疑文件:用命令搜索所有异常的
.ico文件(正常ico一般只有几KB,大文件肯定有问题):
再搜索所有包含八进制编码或find /path/to/your/site -name "*.ico" -type f | xargs ls -la@include的文件:grep -r "\157\157" /path/to/your/site grep -r "@include" /path/to/your/site --include="*.php" --include="*.html" - 检查定时任务:黑客常用cron来自动恢复被删除的后门,检查以下位置:
- 当前用户的定时任务:
crontab -l - 系统级定时任务:
cat /etc/crontab、ls -la /etc/cron.d/ - 其他定时任务目录:
ls -la /var/spool/cron/
- 当前用户的定时任务:
- 检查Web服务器配置:查看Apache/Nginx的配置文件,有没有被注入恶意Rewrite规则、虚拟主机配置,比如自动跳转或隐藏执行脚本的规则。
三、彻底清理Drupal站点的恶意痕迹
- 替换纯净核心文件:不要只做增量升级,直接从官方下载纯净的Drupal 7.59安装包,覆盖现有站点的核心目录(注意备份
sites/default/settings.php和自定义配置),确保核心文件没有被篡改。 - 排查自定义模块/主题:检查所有非官方的模块、主题,以及很久没更新的第三方扩展,黑客经常篡改这些文件或者添加恶意模块。如果不确定,就重新下载官方版本替换。
- 加固上传目录权限:
sites/default/files是重灾区,把这个目录的权限改成755,文件权限改成644,并且禁止该目录的PHP执行权限(后面会说具体配置)。 - 重置所有敏感密码:包括Drupal管理员密码、数据库root密码、服务器SSH/FTP账号密码,黑客可能已经窃取了这些凭证。
四、阻断恶意脚本的执行路径
- 限制PHP执行范围:修改
php.ini配置,开启open_basedir,让PHP只能访问站点目录和临时目录:
同时禁用危险函数:open_basedir = /path/to/your/site:/tmp/disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source - 禁止静态目录执行PHP:在Apache或Nginx里给css、js等静态目录加限制:
Apache配置示例:
Nginx配置示例:<Directory /path/to/your/site/css> php_flag engine off </Directory> <Directory /path/to/your/site/js> php_flag engine off </Directory>
这样就算黑客在这些目录生成恶意PHP文件,也无法执行。location ~* \.(css|js|ico)$ { location ~ \.php$ { return 403; } }
五、监控和验证修复效果
- 实时监控文件变化:用
inotifywait监控可疑目录的创建/修改操作,比如:
一旦有异常文件生成,就能及时发现。inotifywait -m /path/to/your/site/css -e create,modify - 检查数据库:查看
users表有没有陌生账号,variable表有没有被篡改的配置(比如站点名称被注入恶意内容)。 - 前端请求验证:用浏览器开发者工具查看站点的网络请求,确认是否还有向未知域名发送的POST数据,验证恶意脚本是否已被清除。
如果以上步骤都做完还是有问题,那大概率黑客已经获取了服务器的root权限,这种情况下最稳妥的方式是重新搭建服务器,从干净的备份恢复站点文件和数据库,再做全面的安全加固。
内容的提问来源于stack exchange,提问作者JORDANO
相关产品推荐
相关产品推荐

