PbootCMS首页被劫持到其他域名?深度排查 JS 脚本与伪静态文件

PbootCMS首页被劫持到其他域名?深度排查 JS 脚本与伪静态文件.jpg

很多站长会遇到一种很诡异的问题:

网站后台正常、首页内容正常,但用户一访问首页,就会自动跳转到博彩站、灰产站,甚至陌生域名。

更奇怪的是:

  • 自己电脑访问正常;

  • 手机打开却跳转;

  • 搜索引擎点进去被劫持;

  • 只有首页跳,内页不跳;

  • 清缓存也没用;

  • 模板文件看起来没有异常。

如果你用的是 PbootCMS,这大概率不是普通Bug,而是网站被植入跳转代码(挂马)或伪静态规则被篡改导致的。

今天这篇文章,就带你一步一步定位问题。


一、先判断:是真的“首页劫持”吗?

先确认是不是以下情况:

情况1:首页自动跳转到陌生域名

比如:

https://你的网站.com
↓
自动跳到
https://abc-xxx.xyz

这种一般是:

  • JS跳转

  • PHP跳转

  • htaccess跳转

  • nginx伪静态跳转


情况2:百度点进去跳转,直接访问正常

这种通常是:

  • 针对搜索引擎Referer劫持

  • 判断UA(蜘蛛/用户设备)

  • SEO黑帽跳转代码

常见代码:

if(strpos($_SERVER['HTTP_REFERER'],'baidu')){
header("Location:https://赌博网站.com");
}

情况3:手机跳转,电脑不跳

这是典型:

if(/Android|iPhone/i.test(navigator.userAgent)){
location.href="恶意网址";
}

攻击者故意只劫持移动端,不容易被发现。


二、重点排查JS脚本注入

首页跳转,80%是JS被注入。


1.检查模板 footer 文件

最容易藏木马的位置:

/template/default/footer.html
/template/default/index.html
/template/default/head.html

搜索:

window.location
location.href
document.location
setTimeout(function(){
eval(
unescape(
fromCharCode(

危险代码示例:

<script>
setTimeout(function(){
window.location.href='https://xxx.xyz';
},1000);
</script>

2.检查隐藏加密JS

很多木马会写成:

eval(atob("d2luZG93LmxvY2F0aW9uPSJodHRwczovL3h4eC54eXoi"))

这是Base64编码。

可在线解码:

https://www.base64decode.org/

解开可能就是:

window.location="恶意域名"

3.全站搜索script标签

Linux执行:

grep -r "<script" /www/wwwroot/你的网站

搜索可疑外链:

grep -r "http://" .
grep -r "https://" .

重点看陌生域名:

<script src="https://cdn.xx-malw--are.com/a.js"></script>

4.查看最近修改文件

木马通常会留下时间痕迹。

执行:

find ./ -mtime -7

查看最近7天被改动文件。

重点看:

  • template

  • js

  • static

  • config

  • index.php


三、排查 index.php 是否被插入跳转代码

PbootCMS入口文件:

/index.php

打开查看顶部。

正常应该很干净。

如果看到:

header("Location:https://xxx.com");

或者:

echo "<script>location.href='xxx'</script>";

说明已经被改。


四、重点检查伪静态文件(很多人忽略)

有些黑客不改模板,直接改伪静态规则。


Apache 检查 .htaccess

打开:

/.htaccess

正常类似:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,PT,L]
</IfModule>

如果看到:

RewriteCond %{HTTP_USER_AGENT} mobile
RewriteRule ^(.*)$ https://恶意域名 [R=302,L]

就是劫持。


Nginx检查伪静态

宝塔路径:

/www/server/panel/vhost/nginx/你的域名.conf

查看:

return 301 https://xxx.com;

或者:

rewrite ^/(.*)$ https://恶意网站.com permanent;

这就是首页跳转来源。


IIS检查 web.config

Windows服务器看:

/web.config

查找:

<rule name="Redirect">

五、检查数据库是否被写入恶意JS

有些攻击者直接把代码写进后台配置。

登录数据库:

SELECT * FROM ay_config;

重点检查:

site_tongji
site_js
site_footer

常见恶意代码:

<script src="https://bad-123.com/a.js"></script>

六、检查缓存文件

PbootCMS缓存目录:

/runtime/

删除:

/runtime/*

有时木马会藏在缓存里。


七、检查是否被“条件跳转”

很多站长说:

我打开正常,客户打开跳走。

因为黑客设置了条件判断。

例如:

if(document.referrer.indexOf("baidu")>-1)

或者:

if($_SERVER['REMOTE_ADDR']!='你的IP')

意思:

站长自己看不到,别人能看到。

解决方法:

用:

  • 浏览器无痕模式

  • 手机4G网络

  • VPN节点测试

模拟真实用户。


八、彻底修复方法

方法1:官网下载原版覆盖

最稳妥。

保留:

/data
/config
/template

删除其余文件。

重新上传官方PbootCMS程序。

这样能清除大部分隐藏后门。


方法2:修改全部密码

必须修改:

  • PbootCMS后台密码

  • FTP密码

  • SSH密码

  • 宝塔密码

  • 数据库密码

否则黑客会再次进入。


方法3:升级PbootCMS版本

旧版本存在安全漏洞,可能被利用。

建议升级最新版。


方法4:关闭危险权限

目录权限建议:

755

文件:

644

避免:

777

方法5:安装网站防火墙

推荐:

  • 宝塔WAF

  • 云锁

  • SafeLine

  • CDN安全防护


九、如何防止再次被劫持?

记住这几点:

定期备份

每天自动备份:

  • 网站文件

  • 数据库


定期扫描异常文件

执行:

find . -name "*.php" | xargs grep "eval("

禁止陌生JS引用

模板里尽量不要引用第三方JS:

<script src="未知网址"></script>

监控文件变更

宝塔可开启:

文件防篡改

非常有用。


经验分享

PbootCMS首页被跳转,不一定是程序本身问题,更多时候是:

模板JS被注入 + 伪静态文件被篡改 + 后门残留。

排查顺序建议:

模板HTML
↓
JS脚本
↓
index.php
↓
.htaccess
↓
nginx.conf
↓
数据库配置
↓
缓存目录
↓
账号密码

按这个流程查,基本都能找到问题。

别急着重装站点,先定位木马入口,再彻底清理,否则很容易“今天修好,明天又跳”。

作者王家兴头像

王家兴

资深网络营销顾问,8年数字营销经验,曾为多家知名企业提供网站建设、搜索引擎优化、短视频营销、GEO AI营销服务,擅长内容策略规划。