本文目录导读:

- 第一阶段:立即隔离与备份
- 第二阶段:使用工具查杀
- 第三阶段:手动深度清理(针对顽固残留)
- 第四阶段:环境修复与加固(防止再次被挂)
- 第五阶段:恢复与验证
- 如果情况严重(被入侵导致数据泄露、被搜索引擎标记):
- 总结最重要的三条:
网站挂马是常见的安全问题,可能会导致用户数据泄露或网站被搜索引擎标记为危险,以下是系统的查杀和清理步骤,建议严格按照顺序操作:
第一阶段:立即隔离与备份
- 立即断网:如果发现网站异常(如弹出广告、跳转其他网站),立即将服务器从公网断开,防止攻击者继续上传恶意文件或控制服务器。
- 备份当前环境:不要直接覆盖,先完整备份当前的网站文件(包括数据库)到本地或安全的外部存储设备,这份备份用于分析攻击来源,但不用于恢复。
- 创建干净备份:如果有之前干净的备份(确认未被感染),可以直接使用,如果没有,继续下一步。
第二阶段:使用工具查杀
不要仅依赖手动查找,病毒可能伪造成系统文件。
服务器端查杀(推荐)
-
Linux服务器:
- ClamAV(免费开源):这是最常用的命令行杀毒软件。
# 安装(以Ubuntu/Debian为例) sudo apt-get install clamav clamav-daemon # 更新病毒库 sudo freshclam # 扫描网站根目录(var/www/html) sudo clamscan -r --infected /var/www/html # 或使用更快的多线程扫描 sudo clamscan -r --infected --remove /var/www/html # 直接删除,谨慎使用
- Maldet(Linux Malware Detect):专门针对Webshell的扫描工具。
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz tar -xzf maldetect-current.tar.gz cd maldetect-* sudo ./install.sh sudo maldet --scan-all /var/www/html --report
- ClamAV(免费开源):这是最常用的命令行杀毒软件。
-
Windows服务器:
- Windows Defender:可以直接全盘扫描。
- Webshell专杀工具:如 D盾(D_Safe)、护卫神·网站安全狗等(部分需付费或有限制)。
在线扫描(适合临时、小型站点)
- VirusTotal:上传可疑文件(如index.php)到
https://www.virustotal.com,看是否有引擎报毒。 - 站长工具检测:部分站长工具提供在线挂马检测(如百度搜“网站挂马检测”),但不能替代本地扫描。
第三阶段:手动深度清理(针对顽固残留)
如果工具只找到一部分,或者无法删除,需要手动操作:
-
查找异常文件:
- 按时间排序:登录服务器,进入网站根目录,按“修改时间”排序,寻找最近几小时/几天内被修改的文件(尤其是
index.php,config.php,.htaccess等)。 - 查找隐藏文件:使用命令查找隐藏文件(Linux:
find /var/www -name ".*")。 - 查找可疑函数:挂马文件常包含
eval,base64_decode,system,exec,passthru,preg_replace(带e修饰符)等危险函数,使用命令搜索:grep -r "eval(" /var/www/html | grep -v "eval" # 排除某些正常文件 grep -r "base64_decode(" /var/www/html
- 按时间排序:登录服务器,进入网站根目录,按“修改时间”排序,寻找最近几小时/几天内被修改的文件(尤其是
-
检查.htaccess文件:恶意代码常写入这里进行URL重定向,打开所有目录下的
.htaccess,检查是否有RewriteRule指向不明域名,或ErrorDocument等异常指令。 -
检查用户上传目录:
/uploads、/avatar、/attachments等目录如果被上传了.php、.asp、.jsp文件,全部删除,这些目录通常应该只允许上传图片等静态文件。 -
清理缓存与临时文件:删除网站根目录下的
cache/、tmp/、runtime/等文件夹(注意保留必要的结构),这些是恶意代码的常见藏身地。
第四阶段:环境修复与加固(防止再次被挂)
清理完病毒只是第一步,如果不修复漏洞,很快就会再次被入侵。
-
修复已知漏洞:
- CMS/框架:登录后台,检查是否有更新。必须升级到最新版本(WordPress、DedeCMS、ThinkPHP等)。
- 插件/主题:删除所有停止更新、来源不明、长时间未更新的插件和主题,这是最常见的攻击入口。
- 弱口令:修改所有密码(后台管理员、FTP、SSH、数据库),密码至少16位,包含大小写字母+数字+特殊符号。
-
服务器配置加固:
- 禁用危险函数(PHP):在
php.ini中禁用以下函数(在生产环境强烈推荐):disable_functions = shell_exec, exec, system, passthru, popen, proc_open, eval, assert
- 设置文件权限:
# 网站根目录所有者为www用户(非root) chown -R www:www /var/www/html # 目录权限755,文件权限644 find /var/www/html -type d -exec chmod 755 {} \; find /var/www/html -type f -exec chmod 644 {} \; - 限制上传目录执行权限:防止上传的恶意文件被解析执行(以Apache为例,在
uploads目录下创建.htaccess):<FilesMatch "\.(php|php5|phtml|asp|jsp)$"> Deny from all </FilesMatch>
- 禁用危险函数(PHP):在
-
启用Web应用防火墙(WAF):
- 免费方案:Cloudflare(免费版提供基础防护)、ModSecurity(开源WAF)。
- 付费方案:阿里云WAF、腾讯云WAF、安全狗等。
第五阶段:恢复与验证
-
恢复干净备份:
- 如果有确认未被感染的备份,直接恢复。
- 谨慎恢复数据库:数据库也可能被写入恶意内容(如
wp_options表被插入恶意JS),建议从备份中只恢复内容表,而不是全部覆盖,如果不确定,导出数据库SQL文件,查找可疑字符串(如<script>、eval)。
-
验证修复效果:
- 再次扫描:重复第二阶段的扫描,确保无残留。
- 浏览器测试:使用不同浏览器访问网站,检查是否跳转、弹出广告。
- 检查搜索引擎:在Google Search Console或百度站长平台查看“安全与手动操作”,请求重新审核。
- 监控日志:开启服务器访问日志,观察未来48小时内是否有异常IP频繁请求
POST接口或特定路径。
如果情况严重(被入侵导致数据泄露、被搜索引擎标记):
- 联系专业安全公司:如知道创宇、绿盟、启明星辰等,或购买云服务商提供的应急响应服务。
- 上报:如数据涉及用户隐私(身份证、银行卡等),需按当地法律要求(如网安、工信部)报告。
总结最重要的三条:
- 立刻断网,备份被感染的环境(方便溯源)。
- 使用工具(ClamAV/Maldet)扫描,配合手动清理(不要盲目删文件)。
- 修漏洞、改密码、限制上传目录执行权限(不修漏洞等于白干)。
注意:如果对服务器操作不熟悉,建议优先找专业人员或云服务商的技术支持,避免误删核心文件导致网站彻底瘫痪。