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

很多站长会遇到一种很诡异的问题:
网站后台正常、首页内容正常,但用户一访问首页,就会自动跳转到博彩站、灰产站,甚至陌生域名。
更奇怪的是:
自己电脑访问正常;
手机打开却跳转;
搜索引擎点进去被劫持;
只有首页跳,内页不跳;
清缓存也没用;
模板文件看起来没有异常。
如果你用的是 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 ↓ 数据库配置 ↓ 缓存目录 ↓ 账号密码
按这个流程查,基本都能找到问题。
别急着重装站点,先定位木马入口,再彻底清理,否则很容易“今天修好,明天又跳”。