需先确认后门真实性,再人工核对扫描结果;定位外链引入点要逐层追查模板、主题文件及数据库;阻断需禁用危险函数并关闭allow_url_fopen;清理须检查数据库、缓存和.htaccess,最后抓包验证。
确认后门是否真实存在,别误删正常外链
很多所谓“PHP后门”其实是开发时留下的调试代码、第三方统计脚本或CDN加载的合法JS,直接删可能让网站功能异常。先用 grep -r "eval\|base64_decode\|gzinflate\|str_rot13\|file_get_contents.*http" /var/www/html/ 扫描可疑函数调用,再人工核对上下文——比如 file_get_contents('http://xxx.com/track.js') 看域名是否在运维白名单里,而不是一见远程URL就判定为恶意。
定位外链引入点:从HTML源码到PHP模板层层追查
外链脚本通常不是硬编码在PHP里,而是通过 include、require 或动态拼接路径引入。重点检查:
-
footer.php、header.php等公共模板中隐藏的echo file_get_contents(...)或print_r(file(...)) - 主题目录下的
functions.php或theme-options.php里带wp_remote_get(WordPress)或curl_exec的调用 - 数据库中存储的“自定义HTML代码”字段(如 WordPress 的
wp_options表里theme_mods_*或option_value含 base64 字符串)
找到后,用 hexdump -C 查看二进制内容,确认是否被混淆——有些后门会把 eval 拆成 ev'.'al 绕过简单字符串匹配。
阻断远程脚本加载:禁用危险函数 + 网络层拦截
光删文件不够,得切断执行链:
立即学习“PHP免费学习笔记(深入)”;