游客发表
去年秋天,网站一个做外贸的篡改朋友半夜给我打电话,说公司官网首页被换成了一张黑底红字的解决图片,上面写着“你的网站数据在我手里”。他声音都在抖。篡改我让他先拔网线,解决再登录服务器看日志。网站结果发现攻击者用的篡改是三年前就爆出的一个CMS插件漏洞——他嫌麻烦,一直没更新。解决
网站篡改这事,网站说大不大,篡改说小不小。解决往轻了看,网站就是篡改首页被换、跳转到博彩站、解决搜索引擎快照里多出几万条垃圾链接。往重了说,用户数据被挂马、后台被提权、整台服务器变成肉鸡。最要命的是,你根本不知道对方什么时候进来的。很多站长发现的时候,篡改页面已经挂了一两周,搜索引擎都重新抓取过了。
发现页面被改,第一反应往往是去后台改回来。别急。攻击者如果还能写文件,你改一百遍他也能再改回来。正确顺序是:先切断入口。如果是独立服务器,直接停掉Web服务或者拔网线;如果是虚拟主机,联系服务商锁定账户。然后备份当前被篡改的文件和数据库——别删,这是证据。接着查日志,重点看Web访问日志里POST请求的路径、时间点,以及有没有陌生的IP在深夜频繁访问admin目录。
我见过一个案例,攻击者留了一个伪装成图片的PHP后门,文件名是logo.jpg.php。普通文件管理器里看着就是一张图,但服务器照样解析执行。用find /var/www -name "*.php" -mtime -7能快速找出最近七天被修改过的PHP文件。大多数篡改都发生在深夜,时间戳很集中。
把明显被改的页面恢复成备份版本,这只是第一步。后门可能藏在wp-content/uploads里,也可能在数据库的wp_options表里塞了一行自动加载的恶意代码。用Wordfence或者ClamAV扫一遍,但别全信扫描结果——有些后门是加密的,特征库认不出来。手动检查这几个地方:.htaccess文件里有没有奇怪的RewriteRule,index.php开头有没有被插入base64_decode,定时任务里有没有陌生的cron job。
数据库也要查。比如WordPress站点,搜索wp_posts表里有没有包含<script>的摘要,或者wp_options里siteurl被改成了别的域名。攻击者经常留一个隐蔽的管理员账号,用户名看起来像系统默认的,比如admin2或者wordpress_user。直接去用户表里按注册时间排序,把可疑的删掉。
清理完不补漏洞,等于白干。那个外贸朋友的站,漏洞出在一个叫“Custom Contact Forms”的插件上,版本号是4.0.3,攻击者用SQL注入拿到了管理员哈希。我让他把插件全删了,换成WordPress自带的联系表单。CMS核心、主题、插件,全部更新到最新版。别用破解版,别用来源不明的主题。
服务器层面,文件权限设成644和755,目录不允许执行PHP。Web应用防火墙(WAF)能拦掉大部分自动化扫描,但别指望它挡住定向攻击。我自己的做法是:后台登录加二次验证,登录失败五次就封IP一小时,wp-login.php直接改成自定义路径。这些措施不复杂,但能过滤掉九成以上的脚本小子。
没人能保证永远不被入侵。所以文件完整性监控得开着,比如AIDE或者OSSEC,一旦核心文件被改就发邮件。备份要离线,别放在同一台服务器上。我见过最惨的案例是,攻击者把网站和备份一起加密了,站长只能重做。
网站篡改不是技术问题,是习惯问题。定期更新、最小权限、日志留存、离线备份——这四件事做到位,大部分麻烦都能避开。那个外贸朋友后来把服务器换成了托管型,每月花几十美元买个省心。他说:“比起丢订单,这点钱不算什么。”
友情链接