游客发表
打开浏览器,查询输入你的自己站否域名,回车。被挂页面正常加载,查询Logo还在,自己站否文章也能看。被挂但这不代表你的查询网站是干净的。我见过太多案例,自己站否首页看起来一切正常,被挂但搜索引擎结果里你的查询站点下面挂着“此网站可能被黑客入侵”的红色警告。挂马的自己站否人不傻,他们不会把首页改成黑页让你一眼看穿。被挂真正的查询威胁藏在你看不见的地方——某个被篡改的JS文件、一段注入到数据库里的自己站否加密代码,或者一个你根本不知道存在的被挂后台管理员账号。
先查最直接的地方:搜索引擎给你的反馈。Google的Search Console和百度搜索资源平台都有安全检测功能。登录进去,如果站点有恶意软件或钓鱼内容,Google会直接在“安全问题”里标红。百度的“站点属性”里也有安全检测入口。这步最省事,但别全信。我遇到过Search Console显示“未检测到问题”,实际服务器上已经被人种了webshell的情况。搜索引擎的爬虫不是每天来扫,它可能刚好错过了。
接下来手动翻文件。很多人第一反应是看首页源码,对,但别只看首页。挂马的人最爱动的是这几个位置:wp-content/themes/ 下的 functions.php、wp-includes/ 里被修改的JS文件、还有 index.php 顶部被插入的 eval(base64_decode(...))。如果你用WordPress,装个Wordfence或者Sucuri扫描插件,它们会对比官方文件哈希值,能揪出被改过的核心文件。但插件不是万能的——我见过把后门藏在 wp-content/uploads/ 目录下一个伪装成图片的PHP文件里,扫描插件直接跳过了上传目录。
看服务器日志比看文件更有效。登录SSH,翻 /var/log/nginx/access.log 或 /var/log/apache2/access.log。搜几个关键词:eval、base64、shell、cmd=。重点看POST请求。正常的访客不会往你网站发POST请求带一堆乱码参数。如果发现某个IP反复请求 /wp-admin/admin-ajax.php 或者一个你根本不存在的文件路径,比如 /uploads/2023/x.php,那就是有人在你服务器上溜达。我上次帮朋友查,日志里有个IP每五分钟访问一次 /wp-content/plugins/hello.php,那个插件他根本没装过。顺藤摸瓜,在 /tmp/ 目录下找到了一个叫 .cache.php 的后门。
数据库也别放过。挂马的人经常往 wp_options 表里塞恶意脚本,或者把 wp_posts 里的文章内容改成加密的跳转代码。用phpMyAdmin搜一下 <script> 标签,看看有没有奇怪的 document.write 或者 window.location 跳转。更隐蔽的是在 wp_usermeta 里加一个管理员账号,用户名看着像系统默认的,比如 admin2 或 wordpress。查一下用户列表,按注册时间排序,如果有你不认识的账号,直接删。
还有个笨办法但很管用:用 curl -I 看响应头。正常页面返回 200 OK,被挂马的页面有时候会返回 302 跳转到某个博彩网站,但只在特定User-Agent下触发。用手机模拟器和桌面浏览器分别访问,对比返回内容。我试过用 curl -A "Baiduspider" 请求自己的站,结果返回了一段完全不同的JS——专门给百度爬虫看的,普通用户访问根本看不到。这叫“ cloaking ”,挂马的人用来躲避检测。
最后,别忽略本地电脑。你的FTP密码、SSH密钥、数据库密码如果保存在浏览器或者某个 .txt 文件里,先改密码。挂马的人往往是从你本地偷了凭证,然后大摇大摆从后台进去的。我见过最离谱的案例:一个站长把数据库密码写在了 wp-config.php 的注释里,结果被扫描器抓到,整个站被种了挖矿脚本,CPU跑满,网站慢得像蜗牛。
查完这些,如果发现异常,别急着删文件。先备份整个站点和数据库,然后断网——把服务器从公网隔离,或者至少改掉所有密码。挂马的人可能留了不止一个后门,你删掉一个,另一个还在。用 find /var/www -name "*.php" -mtime -7 找出最近七天被修改过的PHP文件,一个一个看。别嫌麻烦,我上次花了三个小时才从一个混淆过的代码里找到真正的入口——一个伪装成 wp-config-sample.php 的webshell,文件名和官方示例文件一模一样,但内容里藏着 system($_GET['cmd'])。
网站安全是个持续的事。今天查干净了,明天可能又被盯上。定期看日志,定期改密码,别用 admin 当用户名。挂马的人专挑懒人下手。
友情链接