杂谈:我的pbootcms被加了木马——问题解决

发布于 2024-04-11  137 次阅读


写在开头:本次被挂马的问题都是基于下面这篇文章解决,此处只是对其做一个整理和记录
解决方案原文:pbootcms被挂马了如何处理-AB模板网

二、问题解决

(一)补救措施

如果被挂马的代码在服务器,则需要将有问题的代码下载下来净化

如果被挂马的代码在本地,则直接净化代码即可

第一步:获取官方程序

pbootcms官方下载最新的程序

注意:有些时候下载的程序可能不是官方的最新版本,比如在发布这篇文章时官方下载的版本为 3.2.4 ,但是后台实际最新版本为 3.2.5 。如果下载的不是最新版本只需要登录后台更新即可。

第二步:替换网站文件夹

将被挂马的源文件中的对应文件夹替换掉官方的文件夹即可

  • 注意:以下提到的文件夹中不会出现php文件,记得查看每一个文件夹及其子文件夹,若出现php文件则代表是病毒,需要删除
  • 需要替换的文件夹
    • /data/:数据库文件夹
    • /skin/:样式文件夹,用于存放CSS代码、JS代码和一些代码中会用到的图片
    • /m/:独立手机端样式文件夹,类似于/skin/
    • /pc/:独立PC端样式文件夹,类似于/skin/
    • /static/:① /static/backup/用于存放数据库备份文件;② /static/upload/用于存放用户上传的图片、视频等文件
    • /style/:不常出现,可能类似于/skin/
    • /template/:用于存放网站html模板文件
    • /upload/:不常出现,可能类似于/static/upload/

第三步:替换并配置数据库文件

  1. 在替换数据库文件时,需要选择日期最新、文件大小最大的文件替换官方的数据文件
  2. 将替换后的数据库文件名复制下来,打开/config/database.php文件,替换第14行代码'dbname' => '/data/pbootcms.db'中的pbootcms.db
<?php
  /**
  * 主数据库连接参数,未配置的参数使用框架惯性配置
  * 如果修改为mysql数据库,请同时修改type和dbname两个参数
  */
  return array(
  'database' => array(
    'type' => 'sqlite', // 数据库连接驱动类型: mysqli,sqlite,pdo_mysql,pdo_sqlite
    'host' => '127.0.0.1', // 数据库服务器
    'user' => 'pboot', // 数据库连接用户名
    'passwd' => '123456', // 数据库连接密码
    'port' => '3306', // 数据库端口               
    // 'dbname' => 'pbootcms' // 去掉注释,启用mysql数据库,注意修改前面的连接信息及type为mysqli
    'dbname' => '/data/pbootcms.db' // 去掉注释,启用Sqlite数据库,注意修改type为sqlite
  )
);

第四步:查看模板代码中是否有病毒代码残留

打开/template/文件夹中查看index.html文件的TDK(标题、描述、关键词)是否被篡改,若被篡改则替换以下代码即可

<title>{pboot:sitetitle}</title>
<meta name="keywords" content="{pboot:sitekeywords}">
<meta name="description" content="{pboot:sitedescription}">

将净化好的网站源代码重新上传服务器即可(记得清空服务器中网站根地址中的所有文件,以防病毒残留)

到此,补救措施就算是完成了。

(二)预防措施

预防措施原文地址:pbootcms模板如何做好防护

第一步:升级后台至最新版

==后台需要升级到最新版!!!==

第二步:重新配置数据库文件

  1. 重命名:修改/data/数据库文件夹名以及/data/pbootcms.db数据库文件名,任意修改即可,避免使用默认的文件夹名和文件名
    • 比如:将/data/pbootcms.db修改为/mydatabase/Thisismydatabase.db,其中,文件夹名修改为了mydatabase,文件名修改为了Thisismydatabase.db
  2. 配置数据库文件:将替换后的数据库文件名复制下来,打开/config/database.php文件,替换第14行代码'dbname' => '/data/pbootcms.db'中的'/data/pbootcms.db',将其修改为上一步重命名的文件夹名和文件名
    • 比如:将第14行代码'dbname' => '/data/pbootcms.db'修改为'dbname' => '/mydatabase/Thisismydatabase.db'
<?php
  /**
  * 主数据库连接参数,未配置的参数使用框架惯性配置
  * 如果修改为mysql数据库,请同时修改type和dbname两个参数
  */
  return array(
  'database' => array(
    'type' => 'sqlite', // 数据库连接驱动类型: mysqli,sqlite,pdo_mysql,pdo_sqlite
    'host' => '127.0.0.1', // 数据库服务器
    'user' => 'pboot', // 数据库连接用户名
    'passwd' => '123456', // 数据库连接密码
    'port' => '3306', // 数据库端口               
    // 'dbname' => 'pbootcms' // 去掉注释,启用mysql数据库,注意修改前面的连接信息及type为mysqli
    'dbname' => '/data/pbootcms.db' // 去掉注释,启用Sqlite数据库,注意修改type为sqlite
  )
);

第三步:重命名后台文件

重命名:将后台文件/admin.php修改为任意名称即可,如/root.php,之后登录后台时只需要输入网址域名/root.php即可

第四步:修改服务器中文件夹的访问权限

  • 权限设置:555权限(禁止写入)
  • 需要配置的文件夹:
    • /apps/
    • /core/
    • /m/
    • /skin/
    • /style/

第五步:修改robots.txt

将其中的代码修改为如下代码:

User-agent: *
Allow: /
Disallow: /ad*
Disallow: /static/*
Disallow: /api/*
Disallow: /?*
Disallow: /app*/
Disallow: /app

写在最后:原本已经把补救措施写好了,但是网页刷新没了!!!🤦‍♂️很难受,原本以为篇幅不长就懒得在本地写了,果然不能有侥幸心理。

如果有些地方说的不准确的地方欢迎指正