ZBlogCMS 网站被黑如何排查修复
学完这篇,你能按步骤确认 ZBlogCMS(Z-BlogPHP)站点是否被入侵、找出后门文件与被篡改的数据,并完成清理和加固,让网站恢复正常访问。
第一步:先拿到"被黑"的实锤
这一步是确认问题到底出在哪,避免误判成服务器故障。
在本地终端执行(把域名换成你自己的):
curl -I https://你的域名/
curl -A "BaiduSpider" -s https://你的域名/ | head -60
第二种是伪装百度蜘蛛抓取,很多黑链只对搜索引擎 UA 展示。常见症状:返回 302 跳转到博彩站、页面底部多出看不见的外链、<title> 被替换、浏览器提示"危险网站"、服务器 CPU 长期 100%。
注意:别用浏览器直接看,很多马会判断 Cookie 和 Referer,浏览器里一切正常。
第二步:备份现场,再动手
这一步是防止你删错东西后无法回滚,做完你会有一份完整的压缩包和 SQL 文件。
tar -czf /root/site_$(date +%F).tar.gz /www/wwwroot/你的站点目录
mysqldump -u数据库用户 -p 数据库名 > /root/db_$(date +%F).sql
备份完再开始清理。同时记下发现异常的时间点,方便后面按时间筛文件。
第三步:按修改时间锁定可疑文件
这一步能快速找出被写入的木马。Z-BlogPHP 正常更新的文件时间是你升级的那天,其余近期被改的都可疑。
find /www/wwwroot/你的站点 -type f -name "*.php" -printf "%TY-%Tm-%Td %TH:%TM %p\n" | sort -r | head -50
重点看这几个位置:
- 根目录下一串随机名或纯数字的
.php(如a1.php、x.php) .htaccess(Apache)或站点 Nginx 配置里的跳转规则zb_users/plugin/、zb_users/theme/下你不认识的新目录zb_users/upload/、zb_users/avatar/里出现的.php文件(正常这里只该有图片)
第四步:搜后门特征码
这一步是把藏得深的马挖出来。执行:
grep -rn --include="*.php" -E "eval\(|assert\(|base64_decode\(|gzinflate\(|str_rot13\(|create_function\(" /www/wwwroot/你的站点
同时检查定时任务和数据库:
crontab -l
mysql -u用户 -p -e "SELECT mem_ID,mem_Name,mem_Level FROM 库名.zbp_member ORDER BY mem_ID DESC LIMIT 20;"
mysql -u用户 -p -e "SELECT log_ID,log_Title FROM 库名.zbp_post ORDER BY log_ID DESC LIMIT 20;"
如果 zbp_member 里多出陌生管理员,或 zbp_post 里批量出现带外链的文章,就是数据库被写入了。
第五步:清理与恢复
这一步做完,网站内容回到干净状态。
- 删除所有确认的陌生 PHP 文件和后门。
- 被改动的核心文件(
index.php、zb_system/下的文件),从官方最新完整包解压后覆盖同名文件,不要手改。 - 数据库里先
SELECT确认,再DELETE垃圾文章和陌生管理员账号。 - 后台顶部导航 → 用户管理,修改管理员密码;同时改数据库密码、FTP/SSH 密码。
- 后台 → 应用中心,卸载你不再使用的插件和主题(很多马就是从废弃插件进来的)。
- 升级 Z-BlogPHP 到当前最新版本。
注意:只删文件不改密码,等于门锁没换,通常几天内会再次被植入。
第六步:加固,堵住入口
这一步是防止二次入侵。给 Nginx 加一段,禁止上传目录执行 PHP:
location ~* ^/zb_users/(data|upload|avatar|cache)/.*\.php$ {
deny all;
}
另外:目录权限设 755、文件 644,属主给 Web 运行用户;后台开启登录验证码;服务器上如果还有别的站,一并按上面流程查一遍——挂马常常是服务器级的,不是单个站的问题。
第七步:善后与观察
在百度搜索资源平台提交安全问题反馈并申请解除拦截,360、腾讯网址安全中心同理。之后连续几天看日志:
tail -f /www/wwwlogs/你的域名.log | grep -E "\.php"
出现陌生的 POST 请求路径,说明还没清干净。
小结
- 用
curl -A "BaiduSpider"抓取页面,确认是否被挂马,别用浏览器判断。 - 动手前先
tar打包站点、mysqldump导出数据库。 - 用
find按时间排序 +grep特征码,双管齐下找后门。 - 数据库要查
zbp_member和zbp_post,马往往同时写文件和数据。 - 清完必须改全部密码、升级程序、删除废弃插件主题,并禁止上传目录执行 PHP。
原文链接:https://www.gj0.com/thread-762.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。