记录一次WordPress网站被种马劫持的经历

注:如果你想通过此文章了解网站被种马后的具体解决方法的话,那这篇文章可能会让你失望。此篇文章更多讲述如何预防这样的事情发生,对于第一句话提出的问题回答是,我直接把整个服务器都重置了。

不对劲的开始

2025年8月份开始,我使用WordPress建站的网站在使用移动端访问时,会自动跳转不良页面,第二次刷新才正常进入。之后再进入也是正常。但每隔一段时间,这种情况就会复现一次。这样下去,我的网站很快就会被认定为不良网站。大半年努力做的SEO也将付之东流。

艰难的排查

一开始以为是手机DNS被劫持的原因,想着重新设置一下路由设备的DNS记录即可。但还没开始操作呢,其他地区的网友也纷纷向我反馈了这个问题。由此一下子就排除了客户端DNS的原因(之后检查了服务器的DNS服务器设置,也没有问题)。看来这次的问题比想像中的更严重。是网站服务器被种马劫持了。由于技术力低下以及前端知识的匮乏。我只能把在主流搜索引擎查询到的可能结果都一一尝试了一次。甚至使用DeepSeek查阅源码。均没有问题。这让我很崩溃。

下图为热心网友 Creeper23456 的网站抓包结果,查询到了可疑图像。

wpcatchpng

下定决心重构

这玩意就像艾滋病一样,预防简单,但中招解决就挺困难。由于不确定网站备份是否也已经中招,只好下定决心重构一个。幸好之前早有设计,按照原先的设计很快就完成了重构。我使用的香港的云服务器。一键重装了镜像,用核弹打蚊子的,相当无奈的方法解决了种马问题。

之后的防护措施

使用Cloudflare的CDN和WAF

这是相当必要的。之前的网站为了保护原IP,其实也套上了Cloudflare的CDN,但之后懒得设置WAF规则,也忘记了此事,WAF网站防火墙可以防止风险IP的扫描和CC攻击等等。大家可以参考此文章进行【CloudFlare】通用防火墙安全配置分享 – Luminous’ Home 进行Cloudflare WAF规则的配置。

使用雷池WAF反代保护源网站

雷池WAF是国内相当出名的WAF提供商,在Github上有17.7K个Star(截至本文发布时间),它可以防止更进一步的注入式攻击和CC攻击,甚至可以给敏感的页面加上身份验证,十分的智能。社区版本是免费的。

根据 雷池 WAF 帮助文档 ,我使用了自动安装方法:

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"

安装好了之后,在后台设置好了反向代理。雷池WAF原理其实和Nginx差不多。都是将流量导入至自身,经过过滤后把安全的流量再转发至源站。能起到非常不错的防护效果。

注意

  • 雷池社区WAF仅支持10个反向代理

  • 雷池WAF推荐分布式安装,不推荐单主机安装

  • 保护雷池WAF的后台,可关闭该功能端口的公网访问(设置防火墙)

后话

这件事情给我带来的警示是,网站的搭建固然幸苦,但是网站的部署同样也非常重要。这件事过后,我在朋友圈看到一位网友也搭建了自己的网站。出于好心的目的,我尝试检查了这个网站。没有套CDN,也没有WAF防护。甚至我使用域名查出来的源IP都能进行HTTP访问(域名访问为HTTPS)。Nginx估计也是没限制。相当之危险。为了不让他的小站变成下一个不良网站。我把建议都给到了他。

理解搭建设计网站的辛苦,想着匆匆上线兑现自己的劳动成果,但是网站的安全可靠部署也是值得投入同样心血的活,这样做也是对自己劳动成果的负责。让我们保护好自己的网站吧。