网站被挂马后,最快且最稳妥的处理路径是:先切断入口止损,再备份取证、彻底清除恶意代码,最后系统加固并修补漏洞,整个流程应在数小时内完成。
排查:如何确认网站是否被挂马
判断网站是否沦陷,往往比想象中容易,多数情况下,站长不是在代码里发现异常,而是先收到百度搜索资源平台的“挂马风险”提醒,或是用户反馈页面跳转到赌博、色情站点,当你看到以下现象时,基本可以确定网站已被入侵:
- 页面源码中出现大量加密JS代码,通常以
eval(function(p,a,c,k,e,d))或 base64 编码形式出现,肉眼不可读。 - 网站无故新增了管理员账号,或首页、模板文件(如header.php、footer.html)的修改时间集中在同一时间段。
- 服务器CPU和带宽持续跑满,访问日志中出现大量 POST 请求,目标路径指向上传接口或后台登录页。
- 搜索引擎收录了大量不属于你的页面标题,site:你的域名 排在首页的却是“某某彩票”“某某博彩”内容。
快速自查命令:登录服务器终端,先看最近24小时内被修改过的文件,Linux执行find /www/wwwroot -type f -mtime -1 -name ".php",Windows Server用文件夹搜索按修改时间排序,这一步能帮你锁定期限,缩小排查范围。
清理:网站被挂马后如何彻底清除恶意代码
挂马清理的核心不是删文件,而是清理要彻底,不能只删入口不堵后门,攻击者通常会留多个后门(WebShell),只删首页被篡改的代码,没过几天又会复发。
第一步:立即切断攻击链路
- 登录服务器控制台,在安全组或防火墙中临时禁止境外IP访问,保留国内省份IP放行,减少攻击面的同时不影响GEO站长访问。
- 通过宝塔面板或云平台修改SSH端口为高位端口(如22345),关闭FTP,改用SFTP,密码换为20位以上随机字符串并开启两步验证。
- 给网站目录做快照备份,注意备份要在清理之前做,用途有两个:一是留作物证,二是如果清理误删正常文件,可以对照恢复。

第二步:全盘扫描定位后门文件
- 使用河马WebShell查杀(免费版足够用),命令:
/usr/local/hm/malware scan /www/wwwroot/你的站点目录。 - 也可以借助D盾(Windows环境)或 CloudWalker(牧云)做纵深检测,多数情况下这些工具能直接定位恶意文件路径。
- 重点关注以下目录:
/tmp、/uploads、/cache、/templates,这些是WebShell藏匿高发区。
第三步:手动清理顽固挂马代码
扫描工具能解决大部分已知签名,但手工查杀能力是站长必须具备的,打开入口文件(如index.php、wp-load.php),拉到底部,看到以开头、error_reporting(0)结尾的代码块,果断删除,对于加密混淆的JS,直接搜索document.write加decodeURIComponent组合,将外链域名(通常不在你的备案名单里)替换为空。
数据库也不能放过:登录phpMyAdmin,执行SELECT FROM wp_posts WHERE post_content LIKE ‘%script%’ ESCAPE ‘/’,查到异常记录直接删除对应行,很多挂马是SQL注入导致的,恶意代码会写入后台的“设置”表或“文章”表里,只清文件不查库等于白做。
加固:网站安全加固方案的另一半是修补漏洞
清理干净只是治标,如果不堵住入侵通道,第二次被挂马只是时间问题,行业共识认为:大多数挂马的根源不是服务器被提权,而是网站应用层存在已知漏洞。
修复已知高危漏洞
- 登录建站程序后台,确认是否为最新版本,例如WordPress版本低于6.x且长期未升级,极容易被插件漏洞批量扫描。
- 停用无用插件和模板,特别是长期不更新、来源不明的破解主题,这类文件是后门重灾区。
- 修改后台登录路径,WP通过插件实现,ThinkPHP框架则改路由配置文件,避免攻击者直接找到
/wp-admin或/admin.php暴力破解。

| 漏洞常见入口 | 对应的修复动作 |
|---|---|
| 上传接口任意文件上传 | 限制上传白名单(jpg/png/zip),禁止脚本执行权限 |
| SQL注入 | 改用预处理语句,安装WAF规则拦截危险关键字 |
| 后台弱口令 | 强制10位以上,含大小写、数字、特殊字符的密码 |
| 插件远程代码执行 | 删除插件,去官方渠道下载原版并保持更新 |
服务端与权限加固
- Linux环境下,给目录和文件按最小权限原则赋值:目录
755、文件644、上传目录去掉执行权限,执行命令find /www/wwwroot/你的站点目录 -type d -exec chmod 755 {} ;和对应文件的644,再单独对/uploads执行chmod -R 644。 - 禁止PHP解析上传目录:在Nginx配置中加上
location ~ /(uploads|images|cache)/..(php|php5)$ { deny all; },这一条能挡住大多数利用图片马发起的攻击。 - 开启WAF,推荐云平台自带的基础防护,或宝塔的免费防火墙插件,规则库选择“拦截所有PHP文件上传和执行”模式。
日常监控也要落实
- 在服务器上装一个文件完整性监控工具(如Tripwire或宝塔的文件扫描),每周自动比对文件哈希值,发现改动立即邮件告警。
- 定期(建议每两周)查看
nginx/access.log,筛选返回404但请求路径含.php且有POST的IP,这种扫描行为往往是大规模攻击前的踩点。
沉淀:从应急响应过渡到常态化防御
单次清理完成后,很多站长会松一口气,但近期数据表明,

被挂马网站在一个月内再次被入侵的比例相当大,原因几乎一致:只清了后门,没有补洞,业内专家指出,挂马背后的成本核算里,攻击者用的是自动化工具在批量扫网,你的网站只要失去利用价值(漏洞被堵、脚本无法执行),对方就会转移目标。
具体落地两件小事:
- 每季度做一次"模拟挂马巡检",顺着上面写的排查路径,主动查找可疑文件和异常端口占用。
- 把清理步骤整理成SOP文档,连同常用查杀工具打包备份到本地,这样下次即便遇到批量挂马,也能在半小时内启动应急,不用临时查资料,如果你同时打理多台服务器,务必在初次处理时就记录清点所有风险域名和证书到期时间,借助云平台的批量运维功能统一管理,能省下不少精力。
先解决问题,再来复盘
回到开篇那句话的逻辑:处理挂马事件,顺序永远大于技术,先把业务恢复到可用状态,再慢慢追究漏洞细节,你所要做的,就是在今天(或者说现在)执行一次完整的清理和加固,而不是每天刷新一遍前端看它是否还在被劫持,数据可以重来,权重的恢复靠内容,服务器的信任恢复靠你的动作。
常见问题解答
网站被挂马怎么处理才算处理干净?
先确认所有后门文件清除,再检查数据库和计划任务,最后修改所有后台密码并升级程序到最新版,如果你无法手动确认,就用D盾加河马双引擎扫描,并持续观察7天访问日志无异常POST请求,此时才算处理干净。
网站被挂马但百度还没收录风险提示,需要主动提交吗?
不必要,百度站长平台的风险提示是系统自动监测的,挂马内容被搜狗、360或其他安全软件拦截时,搜索引擎会依据爬虫抓取自动标记,你只要把清理和加固做完,持续抓取正常,快照会在之后几轮更新中自然恢复,无须人工申请。