网站被黑了怎么办?2026年网站安全应急处理完整流程

王尘宇 问题解答 8

上周我一个朋友的WordPress站被挂了黑链,首页底部被注入了几十个赌博网站的隐藏链接。花了一个通宵处理干净。这篇文章复盘整个处理过程,你照着做就行。

第一步:立刻下线

发现被黑的第一反应不应该是「赶紧删掉恶意代码」——而是先下线。恶意代码往往不只是你看到的那一处,攻击者可能留了多个后门。在线状态下你删一处他可能从另一处重新写入。

操作方法:如果是服务器,直接stop Web服务(Nginx/Apache)。或者临时改DNS把域名指向一个维护页面。不要直接删文件,先下线。

第二步:全站文件扫描

用命令行扫描比用插件靠谱,因为插件可能本身就被篡改了。以下命令在网站根目录执行:

查找最近7天内修改过的PHP文件:find . -name '*.php' -mtime -7

查找包含eval、base64_decode等可疑函数的文件:grep -rl 'eval\|base64_decode\|gzinflate\|str_rot13' . --include='*.php'

查找权限异常的文件(777权限):find . -perm 777

查找隐藏文件(以点开头的非标准隐藏文件):find . -name '.*' -not -name '.' -not -name '..'

这些命令能抓到90%以上的webshell和后门。

第三步:检查数据库

攻击者有时会在数据库里注入恶意代码或隐藏账号。重点查:用户表是否有不明管理员账号、文章和页面内容是否被插入iframe或隐藏链接、options/设置表中是否有异常记录。

WordPress的话,用这个SQL快速检查:SELECT * FROM wp_posts WHERE post_content LIKE '%iframe%' OR post_content LIKE '%display:none%' OR post_content LIKE '%eval%';

第四步:检查服务器安全

文件清了不代表不会再被黑。得找到攻击者是怎么进来的:

查SSH登录日志(/var/log/auth.log),看是否有异常IP的登录记录。查Web服务器访问日志,看是否有异常的POST请求——特别是对wp-admin、xmlrpc.php、上传目录的请求。查定时任务(crontab -l),看是否有恶意定时任务在定期执行。

第五步:清理和恢复

核心原则:不要在原文件上改——直接替换。

WordPress的话:删除wp-admin和wp-includes整个目录,从官网下载最新版重新上传;保留wp-content(但要手动检查里面每个插件和主题);检查.htaccess和wp-config.php有没有被篡改。

非WordPress的站:如果能确定被改动的时间点,直接从备份恢复那个时间点之前的版本。如果没有备份——这是另一个需要马上补的漏洞。

第六步:加固

善后工作比清理更重要,不然下次还会被黑:

改所有密码:SSH、数据库、网站后台、FTP——全部换新的,至少16位随机密码。限制登录尝试次数——WordPress装Limit Login Attempts插件,非WP用fail2ban。关闭不用的端口——只留80、443和SSH端口(SSH端口最好改掉默认的22)。设置文件权限——网站文件644、目录755、配置文件600。开启自动更新——插件、主题、系统补丁有更新就自动打。

最后一条:做好自动备份。设置每天自动备份网站文件和数据库到远程位置。我用的是定时任务+rsync备份到另一台服务器,成本几乎为零。被黑不可怕,没备份才可怕。

标签: 网站安全 网站被黑 WordPress安全 故障排查

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~